Java 8부터 도입된 Stream은 데이터를 처리하기 위한 강력한 API입니다. Stream은 함수형 프로그래밍과 연계하여 데이터 컬렉션을 다루는 작업을 효율적으로 수행할 수 있게 해줍니다. 이번 글에서는 Java의 Stream에 대해 상세히 알아보고, 실제 예시를 통해 사용 방법을 설명하겠습니다.
Stream은 Java 8에서 소개된 컬렉션 요소의 연속적인 흐름을 나타내는 인터페이스입니다. Stream은 함수형 인터페이스와 함께 사용되며, 요소들의 처리, 필터링, 변환 등 다양한 데이터 처리 작업을 지원합니다. Stream을 사용하면 병렬 처리를 쉽게 구현할 수 있어 성능을 향상시킬 수도 있습니다.
Stream을 사용하는 방법은 다양합니다. 아래 예시를 통해 Stream의 사용 방법을 자세히 알아보겠습니다.
import java.util.ArrayList;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.add("Dave");
names.add("Eve");
// forEach를 사용한 요소 출력
names.stream()
.forEach(System.out::println);
// 중복 제거 후 정렬된 요소 출력
names.stream()
.distinct()
.sorted()
.forEach(System.out::println);
// 조건에 맞는 요소 필터링
names.stream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println);
// 요소 변환 후 수행하는 작업
names.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
// 요소 집계 작업
long count = names.stream()
.filter(name -> name.length() > 4)
.count();
System.out.println("길이가 4 이상인 요소의 개수: " + count);
}
}
위의 예시에서는 List에 저장된 이름들을 Stream을 활용하여 다양한 작업을 수행합니다. forEach() 메서드를 사용하여 각 요소를 출력하고, distinct(), sorted() 메서드를 사용하여 중복 제거와 정렬 작업을 수행합니다. filter() 메서드를 사용하여 조건에 맞는 요소를 필터링하고, map() 메서드를 사용하여 요소를 변환합니다. 마지막으로 count() 메서드를 사용하여 요소의 개수를 집계합니다.
실행 결과는 다음과 같습니다:
Alice
Bob
Charlie
Dave
Eve
Alice
Bob
Charlie
Dave
Eve
Alice
ALICE
BOB
CHARLIE
DAVE
EVE
길이가 4 이상인 요소의 개수: 3
Java의 Stream은 데이터 처리를 위한 강력한 API로, 함수형 프로그래밍과 연계하여 데이터 컬렉션을 다루는 작업을 효율적으로 수행할 수 있게 해줍니다. Stream을 사용하면 코드를 간결하게 작성하고, 병렬 처리를 쉽게 구현할 수 있어 성능을 향상시킬 수도 있습니다. 이를 활용하여 다양한 데이터 처리 작업을 유연하게 수행할 수 있습니다.