java-squid / effective-java

effective java 3e study
105 stars 38 forks source link

[아이템 45] 스트림은 주의해서 사용하라 #45

Closed wooody92 closed 3 years ago

guswns1659 commented 3 years ago

아이템45. 스트림은 주의해서 사용하라

핵심

지연평가(lazy evaluation)

의미대로 나중에 평가(계산할지 말지)를 한다는 의미. 스트림에서는 종단연산에서 평가가 이루어진다. 예를 들어 아래 코드에서 filter에서 연산을 수행하지 않는다. 마지막 forEach에서 filter에 연산을 수행하고, 해당 값이 종단 연산에 해당 안되면(평가를 해서) 적용하지 않는다.


import java.util.*;

public class MyClass {
    public static void main(String args[]) {
      List<Integer> list = List.of(1,2,3);
      list.stream().filter(s -> s > 0).forEach(System.out::println);
    }
}
wooody92 commented 3 years ago

필터가 여러개인 경우 순서, 메르센 수

-> 마지막에 한번에 작성한 순서대로 처리된다.

102092 commented 3 years ago