스트림 API

 

Java 8에서 도입된 스트림 API는 컬렉션, 배열 등의 데이터를 함수형 프로그래밍 스타일로 처리할 수 있는 기능을 제공합니다.

스트림 API를 사용하면 데이터 처리 파이프라인을 간결하고 가독성 있게 구성할 수 있습니다.

 

1. 스트림 생성

스트림은 컬렉션, 배열, I/O 채널 등 다양한 소스로부터 생성할 수 있습니다.

1
2
3
4
5
6
7
List<Integer> numbers = Arrays.asList(12345);
Stream<Integer> numberStream = numbers.stream();
int[] arrayOfNumbers = {12345};
IntStream intStream = Arrays.stream(arrayOfNumbers);
Stream<String> lines = Files.lines(Path.of(“file.txt”));
cs

 

2. 중간 연산

중간 연산은 스트림을 변환하거나 필터링하는 등의 작업을 수행하며, 그 결과로 새로운 스트림을 반환합니다. 중간 연산은 지연 실행(lazy evaluation)되며, 최종 연산이 호출될 때까지 실행되지 않습니다.

1
2
3
4
5
6
7
8
List<String> words = Arrays.asList(“apple”“banana”“cherry”“date”);
List<String> filteredWords = words.stream()
        .filter(word > word.length() > 5)
        .map(String::toUpperCase)
        .collect(Collectors.toList());
System.out.println(“Filtered words: “ + filteredWords);
cs

 

3. 최종 연산

최종 연산은 스트림 파이프라인을 실행하고 결과를 생성합니다. 최종 연산이 호출되면 스트림은 소모되며, 더 이상 사용할 수 없습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
List<Integer> numbers = Arrays.asList(12345);
long count = numbers.stream()
        .filter(num > num % 2 == 0)
        .count();
System.out.println(“Even numbers count: “ + count);
int sum = numbers.stream()
        .mapToInt(Integer::intValue)
        .sum();
System.out.println(“Sum of numbers: “ + sum);
cs

 

4. 기본형 스트림

스트림 API는 기본형 데이터(int, long, double 등)를 효율적으로 처리하기 위해 특별한 스트림을 제공합니다. 이를 통해 오토박싱/언박싱 오버헤드를 줄일 수 있습니다.

1
2
3
IntStream intStream = IntStream.range(110);
LongStream longStream = LongStream.rangeClosed(110);
DoubleStream doubleStream = DoubleStream.of(1.02.03.0);
cs

 

5. 병렬 스트림

스트림 API는 병렬 처리를 손쉽게 구현할 수 있는 기능을 제공합니다. parallelStream() 메서드를 호출하면 병렬 스트림이 생성되며, 가능한 경우 여러 스레드에서 작업을 분할하여 처리합니다.

1
2
3
4
5
6
7
List<Integer> numbers = Arrays.asList(12345678910);
int sumOfSquares = numbers.parallelStream()
        .mapToInt(num > num * num)
        .sum();
System.out.println(“Sum of squares: “ + sumOfSquares);
cs

 

6. 무한 스트림

스트림 API는 무한한 요소를 가진 스트림을 생성할 수 있습니다. Stream.iterate()Stream.generate() 메서드를 사용하여 무한 스트림을 만들 수 있습니다.

1
2
3
4
5
6
Stream<Integer> infiniteStream = Stream.iterate(0, i > i + 1);
List<Integer> firstTenNumbers = infiniteStream
        .limit(10)
        .collect(Collectors.toList());
System.out.println(“First ten numbers: “ + firstTenNumbers);
cs

 

스트림 API는 Java에서 함수형 프로그래밍 스타일로 데이터를 처리할 수 있는 강력한 도구입니다. 스트림 API를 활용하면 코드를 간결하고 가독성 있게 작성할 수 있으며, 병렬 처리 등 고급 기능을 쉽게 구현할 수 있습니다.

 

서울우유 나100% 우유, 1800ml, 1개

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다