Java | インクリメント/デクリメントを使わずに済ませる、よりモダンで安全な書き方

Java Java
スポンサーリンク

従来型 vs モダンな書き方(インクリメントの比較)

では「従来型のインクリメントを使ったコード」と「モダンな書き方」を並べて比較できる表を下記に用意したので確認してみましょう。


シーン従来型(インクリメント使用)モダンな書き方(インクリメント不要)メリット
配列の走査java\nfor (int i = 0; i < arr.length; i++) {\n System.out.println(arr[i]);\n}\njava\nfor (int value : arr) {\n System.out.println(value);\n}\nforeachはインデックス管理不要で安全
リストの走査java\nfor (int i = 0; i < list.size(); i++) {\n System.out.println(list.get(i));\n}\njava\nlist.forEach(System.out::println);\nコードが簡潔で意図が明確
条件付きカウントjava\nint count = 0;\nfor (int i = 0; i < list.size(); i++) {\n if (list.get(i).startsWith(\"A\")) {\n count++;\n }\n}\njava\nlong count = list.stream()\n .filter(s -> s.startsWith(\"A\"))\n .count();\nStreamで宣言的に書ける
逆順ループjava\nfor (int i = arr.length - 1; i >= 0; i--) {\n System.out.println(arr[i]);\n}\njava\nIntStream.iterate(arr.length - 1, i -> i >= 0, i -> i - 1)\n .forEach(i -> System.out.println(arr[i]));\nIntStreamで境界条件を明示できる
イテレータ利用java\nfor (int i = 0; i < list.size(); i++) {\n System.out.println(list.get(i));\n}\njava\nIterator<String> it = list.iterator();\nwhile (it.hasNext()) {\n System.out.println(it.next());\n}\n削除操作も安全にできる

まとめ

  • 従来型: i++ を使った for文が基本。シンプルで直感的。
  • モダン型: foreach / Stream / forEach / IntStream を使うと、インクリメント不要で安全。
  • 実務の指針:
    • インデックスが必要 → for文 or IntStream
    • 要素だけ必要 → foreach / forEach / Stream

💡 つまり「インクリメントを正しく使える」ことは基礎力、「インクリメントを書かなくても済む方法を選べる」ことが応用力です。

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