Java | 逆順処理でよくあるバグ集

Java Java
スポンサーリンク

逆順処理のベストプラクティス集

了解です!では「逆順処理を安全に書くためのベストプラクティス集」を整理してみます。


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」という選択肢がベストです。

タイトルとURLをコピーしました