2013-04-09 105 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

使用比較器也會爲您排序列表