개발 생산성 & 코드 최적화/코드 리팩토링 & 최적화

[Java] Stream API 활용법 및 성능 최적화

Jinsapp 2025. 3. 12. 17:55

[Java] Stream API 활용법 및 성능 최적화

1. Stream API란?

Java 8에서 도입된 Stream API는 **컬렉션(List, Set, Map) 등의 데이터를 처리하는 함수형 스타일의 기능**을 제공합니다.

반복문(for)을 사용하는 기존 방식보다 간결하고, 성능이 최적화된 방식으로 데이터를 처리할 수 있습니다.


2. Stream API 기본 사용법

✅ 컬렉션을 스트림으로 변환


// 리스트(List)를 스트림으로 변환
List list = Arrays.asList("Apple", "Banana", "Cherry");
Stream stream = list.stream();

✅ 스트림 사용 예제


import java.util.Arrays;
import java.util.List;

public class StreamExample {
    public static void main(String[] args) {
        List fruits = Arrays.asList("Apple", "Banana", "Cherry", "Avocado");

        // "A"로 시작하는 단어만 필터링하고 출력
        fruits.stream()
              .filter(fruit -> fruit.startsWith("A"))
              .forEach(System.out::println);
    }
}
📌 실행 결과:

Apple
Avocado

3. Stream API 주요 기능

메서드설명예제
filter() 조건을 만족하는 데이터만 필터링 stream.filter(x -> x > 10)
map() 데이터 변환 stream.map(x -> x * 2)
sorted() 데이터 정렬 stream.sorted()
forEach() 각 요소에 대해 작업 수행 stream.forEach(System.out::println)
collect() 리스트 등으로 변환 stream.collect(Collectors.toList())

4. Stream vs 일반 반복문 성능 비교

✅ 일반 반복문 (for-loop)


List numbers = Arrays.asList(1, 2, 3, 4, 5);
for (int num : numbers) {
    System.out.println(num * 2);
}

✅ Stream API


numbers.stream()
       .map(num -> num * 2)
       .forEach(System.out::println);

✔ **Stream API는 코드가 간결해지고, 멀티코어 환경에서 병렬처리도 가능**


5. 병렬 스트림(Parallel Stream) 활용

✅ 병렬 스트림 사용법


List numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.parallelStream()
       .map(num -> num * 2)
       .forEach(System.out::println);

parallelStream()을 사용하면 **여러 개의 스레드가 병렬로 데이터를 처리하여 성능을 높일 수 있음**


6. Stream API 성능 최적화 방법

  • ✔ **Stream 대신 기본 타입 스트림 (IntStream, LongStream) 사용** → Stream<Integer>보다 IntStream이 메모리 효율적
  • ✔ **Parallel Stream 사용 시, 데이터 양과 CPU 코어 수 고려**
  • ✔ **중간 연산(filter, map 등)은 최소화하고, 최종 연산(collect, forEach)을 효율적으로 사용**

🔍 결론

  • ✔ **Stream API는 코드 가독성을 높이고, 데이터 처리 성능을 최적화**할 수 있음
  • ✔ **기본 스트림을 사용하면 성능이 향상됨 (IntStream, LongStream)**
  • ✔ **대용량 데이터 처리 시 병렬 스트림(Parallel Stream)을 활용하면 성능 개선 가능**

📖 다른 Java 개념도 함께 확인하세요!

👉 Java 성능 최적화 가이드 보러 가기