[java] 자바 스트림 API
자바 8부터 도입된 스트림(Stream) API는 컬렉션을 처리하는 기능을 제공하는 람다식과 함수형 인터페이스 기반의 API입니다. 스트림 API를 사용하면 간단하면서도 강력한 컬렉션 처리 기능을 구현할 수 있습니다.
스트림이란?
스트림은 데이터를 추상화하여 다양한 크기의 데이터를 처리할 수 있는 기능을 제공합니다. 스트림은 데이터 소스로부터 데이터를 읽기만 할 뿐 변경하지 않으며, 데이터를 소비하는 용도로만 사용됩니다. 컬렉션과는 달리 스트림은 한 번만 사용할 수 있으며, 사용한 스트림은 자동으로 소멸됩니다.
스트림 API의 주요 기능
스트림 API는 다양한 기능을 제공합니다. 아래는 주요 기능에 대한 간단한 설명입니다.
- 필터링: 지정된 조건에 따라 요소를 필터링합니다.
- 매핑: 요소를 다른 요소로 변환하거나 추출합니다.
- 정렬: 요소를 정렬하여 처리합니다.
- 집계: 요소를 하나의 값으로 리듀스(집계)합니다.
- 그룹화: 요소를 기준에 따라 그룹화합니다.
- 병렬 처리: 스트림을 병렬로 처리하여 성능을 향상시킵니다.
스트림 API 예제 코드
다음은 스트림 API의 간단한 예제 코드입니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "grape", "kiwi");
// 필터링
List<String> filteredFruits = fruits.stream()
.filter(fruit -> fruit.startsWith("a"))
.collect(Collectors.toList());
// 매핑
List<Integer> fruitLengths = fruits.stream()
.map(String::length)
.collect(Collectors.toList());
// 정렬
List<String> sortedFruits = fruits.stream()
.sorted()
.collect(Collectors.toList());
// 집계
long fruitCount = fruits.stream()
.count();
// 출력
System.out.println(filteredFruits);
System.out.println(fruitLengths);
System.out.println(sortedFruits);
System.out.println(fruitCount);
}
}
위 예제 코드에서는 List에 저장된 과일 데이터를 스트림으로 변환하여 다양한 처리를 수행합니다. 필터링, 매핑, 정렬, 집계 등 다양한 스트림 API 메서드를 사용하여 원하는 결과를 얻을 수 있습니다.
스트림 API 참고 문서
Java 스트림 API는 다양한 메서드를 제공하므로 자세한 사용법과 예제는 공식 문서를 참고하시기 바랍니다.