List.sort()
Сортирует список на месте по заданному правилу.
Доступно с: Java 8
Синтаксис
default void sort(Comparator<? super E> c)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| c | Comparator<? super E> | Правило сравнения; `null` — естественный порядок элементов. |
Примеры
По возрастанию и по убыванию:
void main() {
List<Integer> nums = new ArrayList<>(List.of(5, 2, 9, 1));
nums.sort(null);
IO.println(nums);
nums.sort(Comparator.reverseOrder());
IO.println(nums);
}Результат:
[1, 2, 5, 9]
[9, 5, 2, 1]Строки по длине, затем по алфавиту:
void main() {
List<String> words = new ArrayList<>(List.of("pear", "fig", "apple", "kiwi"));
words.sort(Comparator.comparing(String::length).thenComparing(Comparator.naturalOrder()));
IO.println(words);
}Результат:
[fig, kiwi, pear, apple]Примечания
Сортировка устойчивая: равные элементы сохраняют исходный порядок. Метод меняет сам список, поэтому неизменяемый List.of() бросит UnsupportedOperationException. Чтобы получить отсортированную копию, используйте stream().sorted().toList().
См. также
- Collections.sort() — Сортирует список на месте.
- Comparator.comparing() — Создаёт компаратор, который сравнивает объекты по одному полю.
- Stream.sorted() — Сортирует элементы потока.
Вопросы и ответы по теме
В учебнике
- Сортировка и компараторы — Сортировка коллекций в Java: естественный порядок, обратный порядок, интерфейс Comparable, Comparator.comparing и сортировка по нескольким полям.