본문 바로가기
Java/기본 문법

스트림(Stream)

by 정구정구 2026. 6. 4.

스트림(Stream)

  • 데이터를 효율적으로 처리할 수 있는 흐름
  • 선언형 스타일로 가독성이 뛰어남
  • 데이터 준비 -> 중간 연산 -> 최종 연산  순으로 처리됨

 

for 문 vs 스트림

  • [리스트 각 요소에 *10 처리]를 하는 코드 비교

for문

public class Main 
{
    public static void main(String[] args) 
    {
        List<Integer> arrayList = new ArrayList<>(List.of(1, 2, 3, 4, 5));
       
        List<Integer> ret = new ArrayList<>();
        
        for (Integer num : arrayList) 
        {
            int multipliedNum = num * 10; // 각 요소 * 10
            ret.add(multipliedNum);
        }
        
        System.out.println("ret = " + ret); 
    }
}

 

스트림

public class Main 
{
    public static void main(String[] args) 
    {
        List<Integer> arrayList = new ArrayList<>(List.of(1, 2, 3, 4, 5));
       
        List<Integer> ret = arrayList.stream().map(num -> num * 10).collect(Collectors.toList());
        
        System.out.println("ret = " + ret);
    }
}

 

 

 

스트림 처리 단계

단계 단계 이름 설명 주요 API
1 데이터 준비 컬렉션을 스트림으로 변환 stream(), parallelStream()
2 중간 연산 등록 데이터 변환 및 필터링 map(), filter(), sorted()
3 최종 연산 최종 처리 및 데이터 변환 collect(), forEach(), count()
List<Integer> ret = arrayList.stream() // 1. 데이터 준비
    .map(num -> num * 10)              // 2. 중간 연산 등록 (람다식 사용)
    .collect(Collectors.toList());     // 3. 최종 연산

 

 

 

스트림 중간 연산 함께 사용하기

  • 짝수만 10배로 변환 시키는 예시 (filter + map)
List<Integer> arrayList = new ArrayList<>(List.of(1, 2, 3, 4, 5));

List<Integer> ret = arrayList.stream() // 1. 데이터 준비: 스트림 생성
        .filter(num -> num % 2 == 0)    // 2. 중간 연산: 짝수만 필터링
        .map(num -> num * 10)           // 3. 중간 연산: 10배로 변환
        .collect(Collectors.toList()); // 4. 최종 연산: 리스트로 변환

System.out.println(ret); // 출력: [20, 40]

 

'Java > 기본 문법' 카테고리의 다른 글

Collection 주요 기능 - List  (0) 2026.06.11
쓰레드(Thread)  (0) 2026.06.11
인터페이스(interface)  (0) 2026.06.04
람다(Lambda)  (0) 2026.05.21
제네릭(Generic)  (0) 2026.05.20