2013-08-06 14 views
25

Mam List1 w bezpośredniej kolejności. List<String> list = Ordering.natural().sortedCopy(asu2); Jak zmienić zamówienie. I nie wiem, jak przepisać metody z rozszerzania klasy, proszę pisać z przykładami lub mówić wyraźnie. Dzięki.Sortuj listę w odwrotnej kolejności

+0

Czy możesz rozwinąć swoje pytanie na przykładzie? –

+2

Co dokładnie oznacza "kolejność zmian"? Odwrócić listę lub zastosować do niej całkowicie nowe zamówienie na podstawie określonego zestawu reguł? – f1sh

+0

Chcesz, aby lista została posortowana w porządku malejącym. Dobrze? – JHS

Odpowiedz

64

użyj:

Collections.reverse(list); 
+1

Czy jest to sortowanie w porządku malejącym lub po prostu odwróć kolejność, w której elementy zostały wstawione? – JHS

+1

Po prostu odwraca elementy zamówienia. –

+0

+1 dla prostoty, czytelności. – Xynariz

27

Istnieje metoda reverseOrder w klasie Collections, która zwraca wartość Comparator.

Można go używać jak Collections.sort(list, Collections.reverseOrder());

+0

Rozważałbym twoją odpowiedź, ponieważ nie byłoby konieczne załatwianie jej tylko po przywróceniu. Twoje podejście jest w stanie wykonać dwie operacje w jednej ramce. Nie wiem o innych, ale dziękuję. – Loa

7

Jeśli chcesz, aby posortować listę w odwrotnej naturalny zamówienie, guava's Ordering ma a reverse method:

List<String> list = Ordering.natural().reverse().sortedCopy(asu2); 
1

Collections.reverse(List) odwraca podaną listę w miejscu. Możesz również użyć Guva Lists.reverse(List), aby utworzyć widok wspierany przez podaną listę, która jest w odwrotnej kolejności, bez kopiowania lub modyfikowania oryginalnej listy.

Jeśli chcesz utworzyć listę posortowaną w odwrotnej kolejności, zobacz odpowiedź @ assylias na temat Ordering.natural().reverse().

10

możesz odwrócić dowolny typ, po prostu umieszczając znak "-" lub znak ujemny na swoim powrocie.

Collections.sort(listed, new Comparator<Object>() { 

    @Override 
    public int compare(Object o1, Object o2) { 

     return -o1.getLeft().compareTo(o2.getLeft()); 

    } 
}); 
+0

I pozwala mieć nadzieję, że 'compareTo' nigdy nie zwróci minimalnej liczby całkowitej, ponieważ' -Integer.MIN_VALUE' nadal ma wartość 'Integer.MIN_VALUE'. Najbezpieczniejszym sposobem byłoby zamiana o1 z o2 jak 'return o2.getLeft(). CompareTo (o1.getLeft())' – Pshemo

Powiązane problemy