Если списки довольно малы, так что производительность не является реальной проблемой, можно использовать reverse
-метод Lists
-класса в Google Guava
. Дает довольно for-each
-код, и оригинальный список остается прежним. Кроме того, обратный список поддерживается исходным списком, поэтому любое изменение исходного списка будет отражено в обратном.
import com.google.common.collect.Lists;
[...]
final List<String> myList = Lists.newArrayList("one", "two", "three");
final List<String> myReverseList = Lists.reverse(myList);
System.out.println(myList);
System.out.println(myReverseList);
myList.add("four");
System.out.println(myList);
System.out.println(myReverseList);
Дает следующий результат:
[one, two, three]
[three, two, one]
[one, two, three, four]
[four, three, two, one]
Это означает, что обратная итерация myList может быть записана как:
for (final String someString : Lists.reverse(myList) {
//do something
}