Как отсортировать ArrayList <Long> в Java в порядке убывания?

Как отсортировать ArrayList в 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 - класс компаратора, который сравнивает объект, который присутствует в списке.

Ответ 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()+" ");
    }
}