Как отсортировать ArrayList<Long>
в Java в порядке убывания?
98
Вот один из способов list
:
list.sort(null);
Collections.reverse(list);
Или вы можете реализовать свой собственный, Comparator
чтобы отсортировать и исключить обратный шаг:
list.sort((o1, o2) -> o2.compareTo(o1));
Или даже проще использовать, Collections.reverseOrder()
так как вы только двигаетесь задним ходом:
list.sort(Collections.reverseOrder());
l1 > l2 ? -1 : l1 == l2 ? 0 : 1
этот код нелепый.o1.compareTo(o2)
Тогда используйте .o2.compareTo(o1)
здесь :)list.sort((o1, o2) -> o2.compareTo(o1))
источник
Вы можете использовать следующий код, который приведен ниже;
или если вы собираетесь использовать собственный компаратор, вы можете использовать его, как указано ниже
Где CustomComparator - это класс компаратора, который сравнивает объект, который присутствует в списке.
источник
Java 8
хорошо делать это в java 8 так весело и проще
Лямбда-выражения здесь качаются !!!
если вам нужна логика из более чем одной строки для сравнения a и b, вы можете написать это так
источник
Сортировка и использование
Collections.reverse();
источник
Для lamdas, где ваше длинное значение находится где-то в объекте, я рекомендую использовать:
или даже лучше:
источник
Сортировать, потом перевернуть.
источник
Более общий подход к реализации нашего собственного компаратора, как показано ниже
источник
Используя
Collections.sort()
с компаратором, который обеспечивает порядок убывания. См. Javadoc для Collections.sort .источник
Следующий подход сортирует список в порядке убывания, а также обрабатывает « нулевые » значения, на всякий случай, если у вас есть какие-либо нулевые значения, Collections.sort () выдаст NullPointerException
источник
Вы также можете отсортировать с
ArrayList
помощью aTreeSet
вместоcomparator
. Вот пример из вопроса, который у меня был ранее для целочисленного массива. Я использую "числа" в качестве имени-заполнителя дляArrayList
.источник
TreeSet
не хранит повторяющиеся значения.Итак, я хотел бы поднять кое-что, что я считаю важным, и я думаю, что вам следует подумать. время выполнения и память. Допустим, у вас есть список и вы хотите его отсортировать, ну, вы можете, есть встроенная сортировка или вы можете разработать свой собственный. Затем вы говорите: хотите перевернуть список. Это ответ, который указан выше.
Однако, если вы создаете этот список, было бы хорошо использовать другую структуру данных для его хранения, а затем просто выгружать его в массив.
Кучи делают именно это. Вы фильтруете данные, и он обрабатывает все, затем вы можете извлечь все из объекта, и оно будет отсортировано.
Другой вариант - понять, как работают карты. Часто Map или HashMap, как нечто называемое, имеют в основе лежащую концепцию.
Например .... вы вводите кучу пар ключ-значение, где ключ является длинным, и когда вы добавляете все элементы, вы можете сделать:
.keys
и он автоматически вернет вам отсортированный список.Это зависит от того, как вы обрабатываете данные до того, как я думаю, вам следует продолжить сортировку и последующие реверсы
источник
Метод сравнения компаратора может использоваться для сравнения объектов, а затем метод
reversed()
может применяться для изменения порядка -источник
Использование
List.sort()
иComparator.comparingLong()
источник