[Effective java] item45. 스트림은 주의해서 사용하라
in Programming on Java
이번 아이템은 java stream을 잘 사용하는 방법에 대한 내용이다.
cf. JAVA Stream API란? 참고.
스트림 API는 제대로 사용하면 프로그램이 짧고 깔끔해지지만 잘못 사용하면 읽기 어렵고 유지보수도 힘들어짐.
스트림과 반복문을 적절히 조합하는게 최선이다. 기존 코드는 스트림을 사용하여 리펙터링하되, 새 코드가 더 나아 보일때만 반영해야함.
반복코드(코드블럭)에서는 가능하지만 스트림파이프라인(람다)에서는 불가능한 것
- 코드블럭에서는 범위안의 지역변수를 일곡 수정이 가능하지만 람다에서는 FINAL변수만 읽을 수 있고 지역변수를 수정하는건 불가능
- 코드블럭에서는
return
,break
,continue
문을 사용해 반복문 종료나 건너뛰기가 가능하지만 람다는 불가능
스트림이 안성맞춤인 경우
- 원소들의 시퀀스를 일관되게 변환할때
- 원소들의 시퀀스를 필터링할때
- 원소들의 시퀀스를 하나의 연산을 사용해 결합할때
- 원소들의 시퀀스를 (공통된 속성을 기준으로) 컬렉션에 모을때
- 원소들의 시퀀스에서 특정 조건의 원소를 찾을때
스트림으로 처리하기 어려운경우
연산의 단계별 데이터를 동시에 접근해야할때. (스트림은 한 단계 연산을 하면 이전단계의 값은 잃어버림)