【Java】forEachをStreamで実装したい(Map型編)

forEachではなく、steramで実装して!!

というのは割と多いと思う

forEachでMapに詰めていく処理を実装しようとすると

Mapをループの外で宣言して、その変数(resultMap)に順番に詰めていくという処理になる(以下実装例)

■ forEachパターン

List<Integer> integerList = List.of(1, 2, 3, 4, 5);

Map<Integer, String> resultMap = new HashMap<>();
	integerList.forEach(it ->{
		String test = "forEach"+"ですよ";
		resultMap.put(it, test);
	});

ループの中でresultMapがどんどん更新されていく(詰めていく)ような実装になるんですね
(これを割と嫌がる傾向がある)

これをstreamで実装するとresultMapは更新されるのではなく、一括で宣言、値詰めをすることができます

■ streamパターン

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> integerList = List.of(1, 2, 3, 4, 5);

        // Streamを使用してマップ処理を行い、結果をMapに格納
        Map<Integer, String> resultMap = integerList.stream()
                .collect(Collectors.toMap(
                        key -> key,
                        value -> "stream" + "ですよ"
                ));
    }
}

ぜひ参考にしてみてください!

ではっ


是非フォローしてください

最新の情報をお伝えします