リストの逆順イテレーション
クリーンな拡張forループでリストを逆順にイテレートする。
コード比較
✕ Java 8
for (ListIterator<String> it =
list.listIterator(list.size());
it.hasPrevious(); ) {
String element = it.previous();
System.out.println(element);
}
✓ Java 21+
for (String element : list.reversed()) {
IO.println(element);
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
自然な構文
冗長なListIteratorの代わりに拡張forループを使用します。
コピーなし
reversed()はビューを返すため、パフォーマンスオーバーヘッドはありません。
一貫したAPI
List、Deque、SortedSetに統一して動作します。
旧来のアプローチ
手動ListIterator
モダンなアプローチ
reversed()
JDKバージョン
21
難易度
初級
JDKサポート
リストの逆順イテレーション
利用可能
JDK 21 LTS(2023年9月)以降、広く利用可能
仕組み
SequencedCollectionのreversed()メソッドはリストの逆順ビューを返します。このビューは元のリストに裏打ちされているため、コピーは発生しません。拡張forループ構文により、逆順イテレーションが順方向と同じくらい読みやすくなります。
関連ドキュメント