カスタム Comparator で Collections.sort メソッドを使用してリストを並べ替えることができます。インターフェイス Comparable を Oooops に追加すると、作業も楽になります。
public class Ooops<P, O> implements Comparable<Ooops<P,O>> {
private P po;
private O pa;
@Override
public int compareTo(Ooops<P, O> o) {
return (po.toString()+pa.toString()).compareTo(o.po.toString()+o.pa.toString()); //Some common way to compare the two.
}
}
Collections.sort を使用してリストをソートできます。P と O に Comparable の拡張を強制すると、compateTo メソッドがいくらか管理しやすくなります。
すなわち;
public class Ooops<P extends Comparable<P>, O extends Comparable<O>> implements Comparable<Ooops<P,O>> {
private P po;
private O pa;
@Override
public int compareTo(Ooops<P, O> o) {
if (po.compareTo(o.po) == 0)
return pa.compareTo(o.pa);
else
return po.compareTo(o.po);
}
}
Ooops を変更する代わりに、カスタム コンパレータを作成することもできます。
ArrayList<Ooops<String, String>> abc = new ArrayList<Ooops<String, String>>();
Collections.sort(abc, new Comparator<Ooops<String, String>> (){
@Override
public int compare(Ooops<String, String> o1, Ooops<String, String> o2) {
return 0; //Compare the two.
}
});