【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" + "ですよ"
));
}
}
ぜひ参考にしてみてください!
ではっ
是非フォローしてください
最新の情報をお伝えします