2013-04-09 97 views
-2

我明白这是一种重复的问题。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 
} 

我创造了这个类

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 

我很困惑,我该如何排序的对象基于ob中val的值JECT。

任何帮助将是伟大的。

回答

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

您的Ooops课程需要实施Comparable。或者,您需要将自定义Comparator传递给排序方法。

0

您可以实现从您的哎呀和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

使用比较器也会为您排序列表