逆順処理のベストプラクティス集
了解です!では「逆順処理を安全に書くためのベストプラクティス集」を整理してみます。
1. for文での基本形(最も安全で直感的)
for (int i = list.size() - 1; i >= 0; i--) {
System.out.println(list.get(i));
}
Java- ポイント:
- 開始は
size() - 1 - 条件は
i >= 0
- 開始は
- メリット: シンプルで誰でも理解できる。
- 実務での推奨度: ★★★★★
2. foreach + Collections.reverse
List<String> reversed = new ArrayList<>(list);
Collections.reverse(reversed);
for (String item : reversed) {
System.out.println(item);
}
Java- ポイント:
- 元のリストをコピーして逆順に並べ替える
- foreach で安全に処理できる
- メリット: インデックス管理不要、読みやすい
- 実務での推奨度: ★★★★☆
3. Stream API を使う
IntStream.iterate(list.size() - 1, i -> i >= 0, i -> i - 1)
.mapToObj(list::get)
.forEach(System.out::println);
Java- ポイント:
IntStream.iterateで逆順のインデックスを生成- 宣言的に書ける
- メリット: モダンで柔軟、並列処理にも対応可能
- デメリット: 初心者には少し読みにくい
- 実務での推奨度: ★★★☆☆
4. ListIterator を使う
ListIterator<String> it = list.listIterator(list.size());
while (it.hasPrevious()) {
System.out.println(it.previous());
}
Java- ポイント:
ListIteratorを末尾から開始hasPrevious()/previous()で逆順に走査
- メリット: コレクションAPIに準拠、削除操作も安全
- 実務での推奨度: ★★★★☆
まとめ
- for文 → 最もシンプルで安全、基本形として推奨
- foreach + Collections.reverse → 読みやすさ重視、インデックス不要
- Stream API → モダンで宣言的、並列処理にも対応
- ListIterator → コレクションAPIに準拠、柔軟性あり
💡 実務では「まず for文」、読みやすさを優先したいなら「foreach + Collections.reverse」、モダンなコードベースなら「Stream」や「ListIterator」という選択肢がベストです。


