您可以使用带有自定义 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 方法更易于管理。
IE;
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.
}
});