Обратная итерация по списку
Итерация по списку в обратном порядке с помощью чистого цикла for-each.
Сравнение кода
✕ Java 8
for (ListIterator<String> it =
list.listIterator(list.size());
it.hasPrevious(); ) {
String element = it.previous();
System.out.println(element);
}
✓ Java 21+
for (String element : list.reversed()) {
IO.println(element);
}
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Естественный синтаксис
Расширенный цикл for вместо многословного ListIterator.
Без копирования
reversed() возвращает представление — без накладных расходов на производительность.
Согласованный API
Работает единообразно на List, Deque и SortedSet.
Старый подход
Ручной ListIterator
Современный подход
reversed()
Начиная с JDK
21
Сложность
Начинающий
Поддержка JDK
Обратная итерация по списку
Доступно
Широко доступно начиная с JDK 21 LTS (сент. 2023)
Как это работает
Метод reversed() из SequencedCollection возвращает представление списка в обратном порядке. Это представление опирается на исходный список, поэтому копирование не происходит. Расширенный цикл for делает обратную итерацию такой же читаемой, как прямую.
Связанная документация
Доказательство