我知道这是一个重复的问题。
但是,我被这件事卡住了。
public class Ooops<P, O>
{
private P po;
private O pa;
private int val;
public Preference(P p, O o, int v)
{
setPo(p);
setPa(o);
setValue(v);
}
//Getter and setter for Pa,Pa and val
}
我已经创建了一个此类的对象
List<Ooops<String, String>> abc = new ArrayList<Oops<String, String>>();
类似
Acf,PQR,8
ABC,Pas,6
AdC,PhR,3
成为
AdC,PhR,3
ABC,Pas,6
Acf,PQR,8
我很困惑,如何根据对象中val的值对对象进行排序。
任何帮助都会很棒。
Ooops类需要实现Comparable。或者,您需要向排序方法传递一个自定义Comparator。
public class Ooops<P, O> implements Comparable<Ooops<P, O>> {
// your code
@Override
public int compareTo(Ooops<P, O> other) {
return other.val - this.val;
}
}
稍后您可以简单地致电
Collections.sort(yourList);
您可以从Ooops实现Comparable
并覆盖compareTo((。在compareTo()
中,您可以有自己的逻辑来定义排序顺序。例如
@Override
public int compareTo(Ooops<P, O> other) {
return (this.po.getPoCount()+this.pa.getPaCount()) - (other.po.getPoCount()+other.pa.getPaCount());
}
注意,getPoCount()
和getPaCount()
只是一些伪方法。
您可以通过multiplying
获得descending order
,通过-1
获得上述返回值。
使用Comparator也会为您排序列表