Итерация назад по списку
1. обзор
В этом кратком руководстве мы узнаем о различных способах перебора назад по списку в Java.
2. Iterator в Java
Iterator - это интерфейс вJava Collections Framework, который позволяет нам перебирать элементы в коллекции. Он был представлен в Java 1.2 как заменаEnumeration.
3. Итерация в обратном направлении с использованием Core Java
3.1. Обратный циклfor
Самая простая реализация - использовать циклfor доstart from the last element of the list, and decrement the index, когда мы дойдем до начала списка:
for (int i = list.size(); i-- > 0; ) {
System.out.println(list.get(i));
}
3.2. ListIteratorс
Мы можем использоватьListIterator для перебора элементов в списке.
Если указать размер списка в качестве индекса дляListIterator, мы получим итератор, указывающий на конец списка:
ListIterator listIterator = list.listIterator(list.size());
Этот итератор теперь позволяет нам просматривать список в обратном направлении:
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
3.3. Collections.reverse()с
КлассCollections в Java предоставляет статический метод для изменения порядка элементов в указанном списке:
Collections.reverse(list);
Перевернутый список может затем использоваться для итерации по исходным элементам:
for (String item : list) {
System.out.println(item);
}
Однако этот методreverses the actual list by changing the order of elements in-place может быть нежелательным во многих случаях.
4. Итерация в обратном направлении с использованиемReverseListIterator Apache
В библиотекеApache Commons Collections есть отличный классReverseListIterator, который позволяет нам перебирать элементы в списке, фактически не меняя его.
Прежде чем мы начнем, нам нужно импортировать последние зависимости изMaven Central:
org.apache.commons
commons-collections4
4.1
Мы можем создать новыйReverseListIterator, передав исходный список в качестве параметра конструктора:
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
Затем мы можем использовать этот итератор для обхода списка в обратном направлении:
while (reverseListIterator.hasNext()) {
System.out.println(reverseListIterator.next());
}
5. Итерация в обратном направлении с использованиемLists.reverse() Guava
Точно так жеGoogle Guava library also provides a static reverse() method in its Lists class, который возвращает обратный вид предоставленного списка.
Последнюю версию Guava можно найти наMaven Central:
com.google.guava
guava
25.0
Вызов статического методаreverse() в классеLists дает нам список в обратном порядке:
List reversedList = Lists.reverse(list);
Перевернутый список может затем использоваться для итерации по исходному списку:
for (String item : reversedList) {
System.out.println(item);
}
Это методreturns a new list with the elements of the original list in reversed order.
6. Заключение
В этой статье мы рассмотрели различные способы итерации назад по списку в Java. Мы рассмотрели некоторые примеры использования ядра Java, а также использования популярных сторонних библиотек.
Исходный код этой статьи и соответствующие тестовые примеры доступныover on GitHub.