Как развернуть список
Короткий ответ
Collections.reverse() разворачивает список на месте:
void main() {
var numbers = new ArrayList<>(List.of(1, 2, 3, 4));
Collections.reverse(numbers);
IO.println(numbers);
}Результат:
[4, 3, 2, 1]Без изменения
С Java 21 reversed() возвращает развёрнутое представление списка, не меняя его. Работает и с неизменяемыми списками:
void main() {
var days = List.of("Mon", "Tue", "Wed");
IO.println(days.reversed());
IO.println(days);
}Результат:
[Wed, Tue, Mon]
[Mon, Tue, Wed]Обход с конца
reversed() удобно использовать прямо в цикле:
void main() {
var steps = List.of("start", "middle", "end");
for (String step : steps.reversed()) {
IO.println(step);
}
}Результат:
end
middle
startЧастая ошибка
Путать разворот с сортировкой по убыванию. reverse() просто меняет порядок на обратный, а не сортирует:
void main() {
var numbers = new ArrayList<>(List.of(3, 1, 2));
Collections.reverse(numbers);
IO.println(numbers);
numbers.sort(Comparator.reverseOrder());
IO.println(numbers);
}Результат:
[2, 1, 3]
[3, 2, 1]Функции из этого ответа
- Collections.reverse() — Разворачивает порядок элементов списка на месте.
- List.reversed() — Возвращает список в обратном порядке, не копируя его.