我知道这是一个重复的问题。
但是,我坚持这一点。
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
}
我创建了这个类的Object
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的值对对象进行排序。
任何帮助都会很棒。
答案 0 :(得分:2)
您的Ooops类需要实现Comparable。或者,您需要将自定义Comparator传递给排序方法。
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
你可以从你的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()
只是一些虚拟方法。
descending order
只需multiplying
-1
上述返回值{{1}}。
使用Comparator也会为您排序