こんにちは。ユーキです。
今日は、for文のいろいろな書き方を紹介します。
Javaのfor文
Javaのfor文は書き方がいろいろあります。1つ1つ見ていきましょう。
基本型
まずは、一番基本的な書き方です。
「for ( 初期化; 繰り返す条件; インクリメント)」の書式になります。
決められた回数を繰り返す処理を実行する際に使用します。
int result = 0;
for(int i = 0; i < 5; i++) {
result = result + i;
}
各要素は省略が可能で「for(;;)」とすることも可能です。先ほどの処理と同じ処理を書くと以下のようになります。ただ、こういう下記かをするのであれば、while文を使うほうが一般的です。
また、「for(;i<5;)」 や「for(;;i++)」、「for(;i<5;i++)」のような書き方も可能です。
int result = 0;
int i = 0;
for(;;) {
if(i <= 5) {
break;
}
result = result + i;
i++;
}
基本型を使ってIteratorで回す
コレクションを繰り返す際に、基本型を使って繰り返し処理を書いてもいいですが、Iteratorを書くことも可能です。拡張for文が実装されるまではよく使われた書き方となります。
「next()メソッド」で要素を抜き出し、繰り返す条件は、「hasNext()メソッド」で次要素があるかを判断します。要素を抜き出す処理が処理内に記載するため、インクリメント部を省略する形となります。
List<String> txtArr = new ArrayList<String>();
txtArr.add("あいうえお");
txtArr.add("かきくけこ");
txtArr.add("さしすせそ");
txtArr.add("たちつてと");
txtArr.add("なにぬねの");
txtArr.add("はひふへほ");
for(Iterator<String> it = txtArr.iterator(); it.hasNext();) {
String txt = it.next();
System.out.println(txt);
}
拡張for文
Java5で実装された機能となります。コレクションを繰り返す際に、Iteratorを使わず、コレクションを指定するだけで要素を取り出すことが可能となりました。
いわゆるfor-each文です。
コレクションと抜き出す型を指定だけで良いので、非常に簡潔に処理を記載することができます。
List<String> txtArr = new ArrayList<String>();
txtArr.add("あいうえお");
txtArr.add("かきくけこ");
txtArr.add("さしすせそ");
txtArr.add("たちつてと");
txtArr.add("なにぬねの");
txtArr.add("はひふへほ");
for(String txt: txtArr) {
System.out.println(txt);
}
List<String> txtArr = new ArrayList<String>();
txtArr.add("あいうえお");
txtArr.add("かきくけこ");
txtArr.add("さしすせそ");
txtArr.add("たちつてと");
txtArr.add("なにぬねの");
txtArr.add("はひふへほ");
for(String txt: txtArr) {
System.out.println(txt);
}
forEachメソッド
Java8で実装された機能です。Java8では、ラムダ式も導入されました。そのラムダ式を組合せて使用します。
先ほどのラムダ式よりも簡潔に書けますが、ラムダ式に慣れない人間には読みづらいと感じるかもしれません。好みの分かれるところだと思います。
「コレクション.forEac( 引数 -> 繰り返す処理 )」の書式となります。引数の宣言は不要で、下記コードでは「r」としています。この引数に要素が代入される形にとなります。
List<String> txtArr = new ArrayList<String>();
txtArr.add("あいうえお");
txtArr.add("かきくけこ");
txtArr.add("さしすせそ");
txtArr.add("たちつてと");
txtArr.add("なにぬねの");
txtArr.add("はひふへほ");
txtArr.forEach( r -> System.out.println(r));
まとめ
基本型、拡張for文、forEachメソッドといろいろな書き方を紹介しました。
Javaのバージョンが上がるについて、いろいろな書き方が増えています。個人的には拡張for文が読みやすくて好きですが、現場のルールに応じてケースバイケースで使い分けをしていただければと思います。