2013-08-06 4 views
25

У меня есть список1 в прямом порядке. List<String> list = Ordering.natural().sortedCopy(asu2); Как изменить заказ. И я не знаю, как переписать методы из класса extends, пожалуйста, пишите с примерами или говорите четко. Благодарю.Список сортировки в обратном порядке

+0

Вы не можете уточнить свой вопрос с примерами? –

+2

Что именно вы подразумеваете под «изменением порядка»? Отменить список или применить к нему совершенно новый порядок на основе определенного набора правил? – f1sh

+0

Вы хотите, чтобы список сортировался в порядке убывания. Правильно? – JHS

ответ

64

Используйте это:

Collections.reverse(list); 
+1

Выполняет ли этот вид в порядке убывания или просто отменяет порядок, в котором эти элементы были вставлены? – JHS

+1

Он просто меняет порядок элементов. –

+0

+1 для простоты, удобочитаемости. – Xynariz

27

Существует способ reverseOrder в классе Collections, который возвращает Comparator.

Вы можете использовать его как Collections.sort(list, Collections.reverseOrder());

+0

Я бы рассмотрел ваш ответ, так как не нужно было устраивать его только после возвращения. Ваш подход способен выполнять две операции в одном кадре. Я не знаю о других, но спасибо. – Loa

7

Если вы хотите, чтобы отсортировать список в обратном естественно заказ, guava's Заказ имеет a reverse method:

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

Collections.reverse(List) отменяет данный список на месте. Вы также можете использовать Guava's Lists.reverse(List), чтобы создать вид, поддерживаемый данным списком, который находится в обратном порядке без копирования или изменения исходного списка.

И если вы просто хотите создать список, отсортированный в обратном порядке, см. Ответ @ assylias о Ordering.natural().reverse().

10

вы можете отменить любой тип, просто положив «-» или отрицательный знак infront вашего возврата.

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

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

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

    } 
}); 
+0

И давайте надеяться, что 'compareTo' никогда не вернет минимальное целое число, потому что' -Integer.MIN_VALUE' по-прежнему 'Integer.MIN_VALUE'. Самый безопасный способ - обменивать o1 с o2, как 'return o2.getLeft(). CompareTo (o1.getLeft())' – Pshemo

Смежные вопросы