흑백배달기사 프로젝트 진행 중 PR을 통해 팀원과 코드리뷰를 남기는 상황에서 궁금증이 생겼습니다.
for문과 .stream()을 혼용해서 사용하던 중 "어떤 상황"에 "어떤 코드"를 작성하는게 적절한지 알아보는 계기가 되었습니다.


Stream API

Stream API의 도입으로 반복문의 사용 방식에 큰 변화가 생겼다. Stream은 컬렉션 데이터를 필터링, 매핑, 집계 등의 작업으로 가공하는 선언형 스타일을 지원한다. "함수형 프로그래밍" 개념을 바탕으로 간결하고 가독성 높은 코드 작성이 가능해졌다.


for문

  • 직접적인 반복 제어
    • continue, break와 같은 반복문 제어를 자유롭게 사용할 수 있다.
      특정 조건에 따른 반복을 더 쉽게 제어하는 상황에서 용이
  • 단순한 반복 작업
    • 데이터가 적거나 연산이 단순할 경우 성능상 유리
    • 오버헤드로 인한 손해가 병렬처리로 얻는 이점보다 크기에 데이터가 적을 때 적합
  • 예외처리
    • try-catch 블록을 반복문 내 간편히 적용할 수 있어
      예외 상황에 유연한 대처가 필요할 때 적합

.stream()

  • 병렬처리
    • .parallelStream()을 활용해 멀티코어 CPU에서 병렬처리를 쉽게 구현할 수 있어
      대용량 데이터에 대한 처리 성능을 높일 수 있기다.
  • 코드 간결성
    • filter(), map(), collect() 등의 메서드 체이닝하여 코드가 더 직관적이고 가독성이 높아진다.
  • 함수형 프로그래밍 스타일
    • 데이터 가공과 처리 방식을 더 함수형 스타일로 구성할 수 있어, 복잡한 작업을 단순화할 수 있다.

 

정리

  • 데이터가 크고 복잡한 변화이 필요 => steam()
    • 코드의 간결함과 성능을 얻기 위해
  • 직접적인 흐름제어가 필요한 경우 => for문

 

반응형

'Programming Language > JAVA' 카테고리의 다른 글

[JAVA] 정적 멤버와 Static  (0) 2024.11.22

+ Recent posts