Обход коллекции в обратном порядке

Обход коллекции в обратном порядке

Пройтись по коллекции в обратном порядке можно с помощью итератора, передав ему последнюю позицию коллекции.


ArrayList<String> states = new ArrayList<>();
states.add("Germany");
states.add("France");
states.add("Italy");
states.add("Spain");

ListIterator<String> listIter = states.listIterator(states.size()); // устанавливаем смещение

while (listIter.hasPrevious()) {
     System.out.println(listIter.previous()); // Spain, Italy, France, Germany
}
Для LinkedList можно вызвать обратный итератор descendingIterator(), и работать с ним как с обычным итератором.


LinkedList<String> fruit = new LinkedList<>();
fruit.add("Orange");
fruit.add("Pineapple");
fruit.add("Lyme");
fruit.add("Grapefruit");
// [Orange, Pineapple, Lyme, Grapefruit]

Iterator iter = fruit.descendingIterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
/*
Grapefruit
Lyme
Pineapple
Orange
*/
Коллекции