リストの逆順

今更、Javaのおさらいです。

List<String> list = Arrays.asList("A", "B", "C", "D", "E");

java.util.Collectionsreverse をすれば簡単ですが元のリスト自体を逆順にしてしまいます。
そうじゃなくて、「リストの逆順の処理を短く記述したい」
逆順のリスト生成するしかないのか、
LinkedList として生成して Deque インターフェース、
両端キュー内の要素を逆順で繰り返し処理するイテレータを使う ⇒ descendingIterator

for(Iterator<String> it=new LinkedList<>(list).descendingIterator(); it.hasNext();){
   String s = it.next();
   // TODO
});

Stream API で。。。

list.stream().collect(ArrayList::new, (r, t)->r.add(0, t), (r, u)->r.addAll(0, u))
.stream().forEach(e->{
   // TODO 
});

どちらも新しい逆順のリストを生成することには変わりはない。

でも、逆順で連結をしたい時は、以下のように書くこともできる。

String str = list.stream().reduce((e1, e2)->e2 + "." + e1).get();