사용예시

    [Effective Java] 스트림에서는 부작용 없는 함수를 사용하라

    스트림 패러다임 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성하는 부분이다. 이때 각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수이여야 한다. 순수 함수 오직 입력만이 결과에 영향을 주는 함수 스트림의 잘못된 사용 예시 Map freq = new HashMap(); try (Stream words = new Scanner(file).tokens()) { words.forEach(word -> { freq.merge(word.toLowerCase(), 1L, Long::sum); }) } 위 코드는 외부 상태(빈도표)를 수정하는 람다를 실행하면서 문제가 생긴다. (merge) forEach 연산은 스트림 계산 결과를 보여주는 일 이상을 하지 않는 것이 좋다. 잘 사용한 예시..