흑백배달기사 프로젝트 진행 중 PR을 통해 팀원과 코드리뷰를 남기는 상황에서 궁금증이 생겼습니다.
for문과 .stream()을 혼용해서 사용하던 중 "어떤 상황"에 "어떤 코드"를 작성하는게 적절한지 알아보는 계기가 되었습니다.
Stream API
Stream API의 도입으로 반복문의 사용 방식에 큰 변화가 생겼다. Stream은 컬렉션 데이터를 필터링, 매핑, 집계 등의 작업으로 가공하는 선언형 스타일을 지원한다. "함수형 프로그래밍" 개념을 바탕으로 간결하고 가독성 높은 코드 작성이 가능해졌다.
for문
- 직접적인 반복 제어
- continue, break와 같은 반복문 제어를 자유롭게 사용할 수 있다.
특정 조건에 따른 반복을 더 쉽게 제어하는 상황에서 용이
- continue, break와 같은 반복문 제어를 자유롭게 사용할 수 있다.
- 단순한 반복 작업
- 데이터가 적거나 연산이 단순할 경우 성능상 유리
- 오버헤드로 인한 손해가 병렬처리로 얻는 이점보다 크기에 데이터가 적을 때 적합
- 예외처리
- try-catch 블록을 반복문 내 간편히 적용할 수 있어
예외 상황에 유연한 대처가 필요할 때 적합
- try-catch 블록을 반복문 내 간편히 적용할 수 있어
.stream()
- 병렬처리
- .parallelStream()을 활용해 멀티코어 CPU에서 병렬처리를 쉽게 구현할 수 있어
대용량 데이터에 대한 처리 성능을 높일 수 있기다.
- .parallelStream()을 활용해 멀티코어 CPU에서 병렬처리를 쉽게 구현할 수 있어
- 코드 간결성
- filter(), map(), collect() 등의 메서드 체이닝하여 코드가 더 직관적이고 가독성이 높아진다.
- 함수형 프로그래밍 스타일
- 데이터 가공과 처리 방식을 더 함수형 스타일로 구성할 수 있어, 복잡한 작업을 단순화할 수 있다.
정리
- 데이터가 크고 복잡한 변화이 필요 => steam()
- 코드의 간결함과 성능을 얻기 위해
- 직접적인 흐름제어가 필요한 경우 => for문
반응형
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] 정적 멤버와 Static (0) | 2024.11.22 |
---|