そのパフォーマンスが本当の問題ではありませんので、リストはかなり小さい場合は、1が使用できるreverse
の-metod 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
}
for (int i = nodes.size(); --i >= 0;)