본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다.
선결론
- 스트림 연산에 건네지는 함수 객체는 부수효과가 없어야 한다
- 종단 연산 중 forEach는 스트림이 수행한 계산 결과를 보고할 때만 이용하며, 계산 자체에는 이용하면 안 된다
- 스트림을 잘 사용하기 위해선 중요한 수집기 사용방법을 숙지해야 한다
스트림 연산에서의 순수 함수
- 스트림의 각 변환 단계는 가능한 한 순수 함수여야 한다
- 순수 함수란 오직 입력만이 결고에 영향을 주는 함수이다
- 다른 가변 상태를 참조하지 않고, 함수 스스로도 다른 상태를 변경하지 않는다
- 이를 위해서 스트림 연산에 건네지는 함수 객체는 모두 부수효과가 없어야 한다
forEach 연산의 문제
- forEach 연산은 종단 연산 중 기능이 가장 적고 가장 '덜' 스트림답다
- 대놓고 반복적이므로 병렬화할 수 없다
- forEach 연산은 스트림 계산 결과를 보고할 때만 사용하되, 계산에는 이용하지 말자
수집기
- 수집기(collector)를 사용하면 스트림의 원소를 손쉽게 컬렉션으로 모을 수 있다
- 가장 중요한 수집기 팩터리에는 toList, toSet, toMap, groupoingBy, joining 등이 있다
'책 > Effective Java' 카테고리의 다른 글
[이펙티브 자바] 아이템 50: 적시에 방어적 복사본을 만들라 (0) | 2022.06.21 |
---|---|
[이펙티브 자바] 아이템 48: 스트림 병렬화는 주의해서 적용하라 (0) | 2022.06.17 |
[이펙티브 자바] 아이템 43: 람다보다는 메서드 참조를 사용하라 (0) | 2022.06.10 |
[이펙티브 자바] 아이템 42: 익명 클래스보다는 람다를 사용하라 (0) | 2022.06.10 |
[이펙티브 자바] 아이템 38: 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 (0) | 2022.06.03 |