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 
} 

Я создал объект этого класса

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 в ob ект.

Любая помощь будет отличной.

ответ

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() вы можете иметь свою собственную логику там, чтобы определить порядок сортировки. В качестве примеров

@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.

Использование Компаратор также отсортировать список для вас