支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

皆様は拡張for文(foreach文)というものをご存知でしょうか。配列やコレクションに対して同じ処理をする際に、非常に便利な構文になります。本稿では拡張for文のサンプルコードを紹介していきます。

拡張for文とは?

拡張for文はJava 5.0から導入されました。配列やコレクションに対して、全ての要素に同じ処理をすることができます。for文より少ない記載量でコーディングすることができるので非常に便利ですが、一部の要素に対して処理を行うといったこともできないので注意が必要です。


//拡張for文の構文
for (型 変数名: 配列名もしくはコレクション名){
  実行する処理
}

拡張for文の例文

ここからは実際にプログラミングコードで普通のfor文と拡張for文を使用した場合の記載方法を比較していきます。

サンプルコード1(配列の参照)

拡張for文をよく使う場面としては、配列の全ての中身を参照したい時に使います。以下は拡張for文を使用せずにfor文でループした場合です。


public class Main {
	public static void main(String[] args) {
	    //String型のデータが四つ入っている配列を用意します。
		String fruits[] = {"apple", "orange", "banana", "watermelon"};
		
		//fruits配列の長さだけループします。
		for (int i = 0; i < fruits.length; i++){
		    //iを配列の要素数とし、配列の値を出力します。
		    System.out.println(fruits[i]);
		}
	}
}

拡張for文を使用した場合です。


public class Main {
	public static void main(String[] args) {
	    //String型のデータが四つ入っている配列を用意します。
		String fruits[] = {"apple", "orange", "banana", "watermelon"};
		
		//拡張for文でループします。
		for(String fruit : fruits){
		    //配列の中身を一つずつfruitとして受け取り、出力します。
		    System.out.println(fruit);
		}
	}
}

実行結果は以下の通りです。普通のfor文と違い、ループ回数を気にする必要がありません。


apple
orange
banana
watermelon

サンプルコード2(二次元配列の場合)

一次元配列と比べ、多次元配列になるとfor文と拡張for文とでコーディングのシンプルさに違いが出てきます。以下は拡張for文を使用せずにfor文でループした場合です。


public class Main {
	public static void main(String[] args) {
	    //String型のデータが四つ入っている二重配列を用意します。
		String fruits[][] = {{"apple", "orange"}, {"banana", "watermelon"}, {"grapes", "strawberry"}};
		
		//fruits配列の長さだけループします。
		for(int i = 0; i < fruits.length; i++){
		    //fruits[i]配列の長さだけループします。
		    for(int j = 0; j < fruits[i].length; j++){
		        //iとjを配列の要素数とし、配列の値を出力します。
		        System.out.print(fruits[i][j] + " ");    
		    }
		    System.out.println();
		}
	}
}

拡張for文を使用した場合です。


public class Main {
	public static void main(String[] args) {
	    //String型のデータが四つ入っている二重配列を用意します。
		String fruits[][] = {{"apple", "orange"}, {"banana", "watermelon"}, {"grapes", "strawberry"}};
		
		//拡張for文でループします。
		for(String[] fruit_array : fruits){
		    //拡張for文でループします。
		    for(String fruit : fruit_array){
		        //配列の中身を一つずつfruitとして受け取り、出力します。
		        System.out.print(fruit + " ");    
		    }
		    System.out.println();
		}
	}
}

実行結果は以下の通りです。


apple orange 
banana watermelon 
grapes strawberry 

まとめ

本稿では拡張for文について構文や例文を使って紹介してきました。拡張for文はループ回数や要素番号を気にする必要がないので非常に扱いやすいです。

本稿が皆様のお役に立てれば幸いです。最後までお読みいただきありがとうございます。