-2

我知道这是一种重复的问题。

但是,我坚持这一点。

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 的值对对象进行排序。

任何帮助都会很棒。

4

3 回答 3

2

您的 Ooops 类需要实现Comparable。或者,您需要将自定义Comparator传递给 sort 方法。

于 2013-04-09T18:23:21.030 回答
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);
于 2013-04-09T18:27:08.717 回答
0

您可以Comparable从您的 Ooops 实现并覆盖 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

使用 Comparator 还会为您排序列表

于 2013-04-09T19:07:46.840 回答