ArrayList对象排序混乱

时间:2013-04-09 18:22:07

标签: java arrays arraylist

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

但是,我坚持这一点。

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

任何帮助都会很棒。

3 个答案:

答案 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也会为您排序