Arrays.stream(Cons.SIMPLE_KEY.values()).map(c -> {
System.
out.println("didn't come here");
map.put(c.name().toUpperCase(),"data");
return map;
});
Arrays.
stream(Cons.SIMPLE_KEY.values()).map(c ->
{
System.
out.println("come in");
map.put(c.name().toUpperCase(),"data");
return map;
}).
count();


두 예제의 차이점이 있다.


첫번째것은 맵에 값을 못넣고 두번째는 넣는다.

didn't come here 는 찍히지 못하고 come in 은 찍힌다.


즉 map 만 하면 람다는 그뒤에 행위가 없으므로 아예 수행조차 하지 않는다.  (일반적으로 map 은 뭔가 수행한뒤 그 스트림을 이어서 뭔가 하길 기대하기 때문이랄까? 그대로 끝나면 버려지는 결과물이라 할 이유가 없다고 판단하는듯 하다. 바로 lazy 수행임 )


count 가 됐든 뭐든 map 이후로 해야하는 행위가 있으면 처음부터 수행해 나간다.


그런데 괜히 할것 없는데 (즉 내부 맵만 변경한다던지) map 을 할 필요가 있느냐? 그런경우는  .map --> .forEach 를 쓰도록 한다.



+ Recent posts