
Пройтись по коллекции в обратном порядке можно с помощью итератора, передав ему последнюю позицию коллекции.
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
*/