[Effective Java 3/e] 아이템 46 - 스트림에서는 부작용 없는 함수를 사용하라
아이템 46 - 스트림에서는 부작용 없는 함수를 사용하라
스트림 패러다임을 이해하지 못한 채 API만 사용했다 - 따라 하지 말 것
Map<String, Long> freq = new HashMap<>();
try (Stream<String> words = new Scanner(file).tokens()) {
words.forEach(word -> {
freq.merge(word.toLowerCase(), 1L, Long::sum);
});
}
스트림을 제대로 활용해 빈도표를 초기화한다
Map<String, Long> freq;
try (Stream<String> words = new Scanner(file).tokens()) {
freq = words.collect(groupingBy(String::toLowerCase, counting()));
}
- forEach 연산은 스트림 계산 결과를 보고할 때만 사용하고, 계산하는 데는 쓰지 말자