リストやマップでは拡張 for 文が使えますが、ここで学ぶ forEach 文を使うともっと簡潔に繰り返し処理を行うことが出来ます。
まず forEach 文の書式は次のようになります。
変数名.forEach( ラムダ式 )
ではリストを使った例を示します。
import java.util.ArrayList; public class Main{ public static void main(String[] args) { // リスト定義 ArrayList<String> list1 = new ArrayList<String>(); ArrayList<Integer> list2 = new ArrayList<Integer>(); // 要素を追加 list1.add( "hoge" ); list1.add( "fuga" ); list1.add( "piyo" ); list2.add( 12 ); list2.add( 34 ); list2.add( 56 ); // String 型リストの forEach 文 // 型推論により str は String 型になる list1.forEach( str -> { System.out.println( "str = "+str ); } ); // Integer 型リストの forEach 文 // 型推論により a は Integer 型になる list2.forEach( a -> { System.out.println( "a = "+a ); } ); } }
str = hoge str = fuga str = piyo a = 12 a = 34 a = 56
同様にマップを使った場合は次のようになります。
マップの場合はキーと値の2つがラムダ式の引数となります。
import java.util.HashMap; public class Main{ public static void main(String[] args) { // マップ定義 HashMap<String, Integer> map = new HashMap<String, Integer>(); // 要素を追加 map.put( "hoge", 123 ); map.put( "fuga", 456 ); map.put( "piyo", 789 ); // key がキー、value が値 // 型推論により key は String 型、value は Integer 型になる map.forEach( (key,value) -> { System.out.println( "key = " + key + ", value = " + value ); } ); } }
key = hoge, value = 123 key = fuga, value = 456 key = piyo, value = 789