본문 바로가기

WEB개발/JAVA

java Stream API

컬렉션 데이터를 “선언적으로 처리”하기 위한 API
(반복, 필터링, 변환, 집계 등을 파이프라인으로 표현

 

데이터 소스
   ↓
중간 연산 (0~N)
   ↓
최종 연산 (1)

 

List<String> names = List.of("kim", "lee", "park");

List<String> result =
    names.stream()                 // 소스
         .filter(n -> n.length() > 3) // 중간
         .map(String::toUpperCase)   // 중간
         .toList();                  // 최종

 

중간 연산 (Stream 반환)

메서드 설명
filter 조건 필터
map 변환
flatMap 평탄화
distinct 중복 제거
sorted 정렬
limit / skip 개수 제한

 

최종 연산

메서드 설명
forEach 소비
toList / collect 컬렉션
findFirst / findAny 하나
anyMatch / allMatch 조건
count 개수
reduce 축약

 

 

Optional이란? 

“null이 올 수 있음”을 타입으로 표현

 

① 값 있으면 실행

opt.ifPresent(u -> log.info(u.getName()));


② 값 있으면 변환

String name =
    opt.map(User::getName)
       .orElse("UNKNOWN");


③ 없으면 예외

User user =
    opt.orElseThrow(() -> new IllegalStateException("없음"));


④ 없을 때 대체 로직

User user =
    opt.orElseGet(this::createDefaultUser);

'WEB개발 > JAVA' 카테고리의 다른 글

람다 Lambda  (0) 2026.01.21
Checked Exception, Unchecked Exception (Runtime Exception)  (0) 2025.12.08
[JAVA - NIO] New Input/Output  (0) 2025.12.04
Daemon Thread vs User Thread  (0) 2025.02.21
CyclicBarrier, CountDownLatch  (0) 2025.02.21