リストマップでは拡張 for 文が使えますが、ここで学ぶ forEach 文を使うともっと簡潔に繰り返し処理を行うことが出来ます。

まず forEach 文の書式は次のようになります。

forEach 文の書式
変数名.forEach( ラムダ式 )

ではリストを使った例を示します。

ソース1: リスト版 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 );
        } );

    }
}


ソース1の実行結果
str = hoge
str = fuga
str = piyo
a = 12
a = 34
a = 56

同様にマップを使った場合は次のようになります。
マップの場合はキーと値の2つがラムダ式の引数となります。

ソース2: マップ版 forEach 文
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 );
        } );
    }
}

ソース2の実行結果
key = hoge, value = 123
key = fuga, value = 456
key = piyo, value = 789