Рубрики
Без рубрики

Итерирование назад через список

Узнайте о различных способах итерации через список назад, включая некоторые популярные сторонние библиотеки

Автор оригинала: baeldung.

Итерирование назад через список

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

Вызов статического метода обратный () на Списки класс дает нам список в обратном направлении:

List reversedList = Lists.reverse(list);

Обратный список может быть использован для итерации назад над исходным списком:

for (String item : reversedList) {
    System.out.println(item);
}

Этот метод возвращает новый список с элементами исходного списка в обратном порядке .

6. Заключение

В этой статье мы рассмотрели различные способы итерации назад через список в Java. Мы прошли через несколько примеров с использованием основных Java, а также с использованием популярных сторонних библиотек.

Исходный код этой статьи и соответствующие тестовые случаи доступны более на GitHub .