Java/문법

Stream - 데이터를 효율적으로 처리해보자

JuNo_12 2025. 4. 18. 13:49

Stream 이란?

: 데이터를 효율적으로 처리할 수 있는 흐름

  • 선언형 스타일로 가독성이 굉장히 뛰어나다.
  • 데이터 준비 → 중간 연산 → 최종 연산 순으로 처리 ( Stream -> map -> collect )
  • 스트림은 컬렉션(List, Set 등)과 함께 자주 활용

람다식을 매개변수에 직접 활용한 예시 + 중간 연산 단계에서 .filter 사용

public class Main {

    public static void main(String[] args) {

        // ArrayList 선언
        List<Integer> arrayList = new ArrayList<>(List.of(1, 2, 3, 4, 5));

        //  람다식을 직접 활용
        List<Integer> ret5 = arrayList.stream() // 1. 데이터 준비
                .map(num -> num * 10)           // 2. 중간 연산 등록
                .collect(Collectors.toList());  // 3. 최종 연산
        System.out.println("ret5 = " + ret5);
        
        
        List<Integer> ret6 = arrayList.stream() // 1. 데이터 준비: 스트림 생성
        .filter(num -> num % 2 == 0)    // 2. 중간 연산: 짝수만 필터링
        .map(num -> num * 10)           // 3. 중간 연산: 10배로 변환
        .collect(Collectors.toList()); // 4. 최종 연산: 리스트로 변환
    }
}

 

API 종류

단계 설명 주요 API
1. 데이터 준비 컬렉션을 스트림으로 변환 stream(), parallelStream()
2. 중간 연산 등록
(즉시 실행되지 않음)
데이터 변환 및 필터링 map(), filter(), sorted()
3. 최종 연산 최종 처리 및 데이터 변환 collect(), forEach(), count()