스트림(Stream)이란?

  • Java Stream은 데이터를 흐름처럼 처리하는 방식
  • 컬렉션(List, Map, Set 등)을 선언형(Declarative) 으로 연속된 연산(Pipeline) 으로 처리할 수 있게 해주는 기능
  • “어떻게(iteration) 돌릴지”가 아니라 “무엇을(map/filter/reduce) 하고 싶은지”에 집중하도록 만든 도구

스트림 VS 기존 방식

  • 기존 방식 (명령형 Imperative)
List<String> result = new ArrayList<>();
for (String item : list) {
    if (item.startsWith("A")) {
        result.add(item.toUpperCase());
    }
}
  • Stream 방식 (선언형 Declarative)
List<String> result = list.stream()
                          .filter(s -> s.startsWith("A"))
                          .map(String::toUpperCase)
                          .toList();
  • 더 짧고, 더 명확하고, 쉽게 읽힌다.

스트림+Optional VS 기존 체이닝

항목 스트림+Optional 기존 체이닝
NPE 위험 거의 없음 매우 높음
Optional 처리 .map() / .flatMap() → 안전 .get() 반복 → 위험
디폴트 처리 .orElse() 로 자연스럽게 불가능
가독성 단계적, 명확 복잡, null-safe 아님
확장성 매우 강함 약함
유지보수성 좋음 나쁨

참고

  • ChatGPT-5.1

보완/복습

  • 2025.12.03 생성

태그:

카테고리:

업데이트: