2013-04-09 3 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 
} 

나는

Acf,PQR,8 
ABC,Pas,6 
AdC,PhR,3 

내가 객체를 정렬 할 수있는 방법을

AdC,PhR,3 
ABC,Pas,6 
Acf,PQR,8 

내가 혼란 스러워요

을되고,이 클래스

List<Ooops<String, String>> abc = new ArrayList<Oops<String, String>>(); 

뭔가처럼의 객체를 생성 한 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() 당신이 당신의 자신의 논리를 가질 수 것은 정의하는 .IN은 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 ordermultiplying 위의 반환 값인 -1으로받을 수 있습니다.

또한

에 대한 목록을 정렬합니다 비교기를 사용하여