Итерирование назад через список
1. Обзор
В этом быстром учебнике мы узнаем о различных способах итерации назад через список в Java.
2. Итератор на Яве
Итератор интерфейс в Рамочная система коллекций Java что позволяет нам итерировать элементы коллекции. Он был введен в Java 1.2 в качестве замены Перечисление .
3. Итерирование назад с помощью Core Java
3.1. Обратный для петли
Самая простая реализация заключается в использовании для петля к начать с последнего элемента списка и о замедляет индекс по мере того как мы достигаем начало списка:
for (int i = list.size(); i-- > 0; ) { System.out.println(list.get(i)); }
3.2. Листитератор
Мы можем использовать Листитератор итерировать элементы в списке.
Предоставление размера списка в качестве индекса для Листитератор даст нам итератор, указывающий на конец списка:
ListIterator listIterator = list.listIterator(list.size());
Этот итератор теперь позволяет нам пересекать список в обратном направлении:
while (listIterator.hasPrevious()) { System.out.println(listIterator.previous()); }
3.3. Коллекции.обратно ()
тем Коллекции класс в Java предоставляет статический метод для отмены порядка элементов в указанном списке:
Collections.reverse(list);
Затем обратный список может быть использован для итерации назад по исходным элементам:
for (String item : list) { System.out.println(item); }
Этот метод, однако, меняет фактический список, изменяя порядок элементов на месте , и не может быть желательным во многих случаях.
4. Итерирование назад с помощью обратногоlistIterator Apache
тем Коллекции Apache Commons библиотека имеет хороший ОбратныйListIterator класс, который позволяет нам цикл через элементы в списке, фактически не обратив его вспять.
Прежде чем мы начнем, мы должны импортировать последние зависимости от Мавен Центральный :
org.apache.commons commons-collections4 4.1
Мы можем создать новую ОбратныйListIterator передавая исходный список в качестве параметра конструктора:
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
Затем мы можем использовать этот итератор, чтобы пройти список назад:
while (reverseListIterator.hasNext()) { System.out.println(reverseListIterator.next()); }
5. Итерирование назад с помощью списков Гуавы.обратно ()
Аналогичным образом, Библиотека Google Guava также предоставляет статический обратный () метод в своем Списки класс что возвращает обратное представление предоставленного списка.
Последнюю версию Guava можно найти на Мавен Центральный :
com.google.guava guava 25.0
Вызов статического метода обратный () на Списки класс дает нам список в обратном направлении:
ListreversedList = Lists.reverse(list);
Обратный список может быть использован для итерации назад над исходным списком:
for (String item : reversedList) { System.out.println(item); }
Этот метод возвращает новый список с элементами исходного списка в обратном порядке .
6. Заключение
В этой статье мы рассмотрели различные способы итерации назад через список в Java. Мы прошли через несколько примеров с использованием основных Java, а также с использованием популярных сторонних библиотек.
Исходный код этой статьи и соответствующие тестовые случаи доступны более на GitHub .