Как отсортировать ArrayList в Java в порядке убывания?
Как отсортировать ArrayList <Long> в Java в порядке убывания?
Ответ 1
Здесь один способ для вашего list
:
Collections.sort(list);
Collections.reverse(list);
Или вы можете реализовать свой собственный Comparator
для сортировки и устранения обратного шага:
Collections.sort(list, new Comparator<Long>() {
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Или еще проще использовать Collections.reverseOrder()
, поскольку вы только меняете:
Collections.sort(list, Collections.reverseOrder());
Ответ 2
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
Ответ 3
Вы можете использовать следующий код, который приведен ниже:
Collections.sort(list, Collections.reverseOrder());
или если вы собираетесь использовать пользовательский компаратор, который вы можете использовать, как он указан ниже
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
Где CustomComparator - класс компаратора, который сравнивает объект, который присутствует в списке.
Ответ 4
Сортировка обычно и Collections.reverse();
Ответ 5
Java 8
Хорошо сделать это в java 8 так весело и проще
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
Лямбда-выражения здесь рок!!!
если вам понадобилось более одной логики для сравнения a и b, вы могли бы написать это как
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
Ответ 6
Сортировка, затем обратная.
Ответ 7
Более общий подход к реализации нашего собственного компаратора ниже
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Ответ 8
Следующий подход будет сортировать список в порядке убывания, а также обрабатывать значения null, на всякий случай, если у вас есть нулевые значения, тогда Collections.sort() будет бросать NullPointerException
Collections.sort(list, new Comparator<Long>() {
public int compare(Long o1, Long o2) {
return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);
}
});
Ответ 9
Используя Collections.sort()
с компаратором, который предоставляет порядок убывания.
См. Javadoc для Collections.sort.
Ответ 10
Вы также можете сортировать ArrayList
с TreeSet
вместо comparator
. Вот пример из вопроса, который у меня был ранее для целочисленного массива. Я использую "числа" в качестве имени-заполнителя для ArrayList
.
import.java.util.*;
class MyClass{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
numbers = new ArrayList<Integer>(ts);
System.out.println("\nThe numbers in ascending order are:");
for(int i=0; i<numbers.size(); i++)
System.out.print(numbers.get(i).intValue()+" ");
System.out.println("\nThe numbers in descending order are:");
for(int i=numbers.size()-1; i>=0; i--)
System.out.print(numbers.get(i).intValue()+" ");
}
}