자바 스트림(Stream) 사용법 & 예제
스트림(Stream)은 자바 8부터 도입된 새로운 개념으로, 컬렉션 데이터를 처리하는 기능을 제공합니다. 스트림은 데이터를 일관성있게 처리하기 위한 작업(필터링, 변환, 집계 등)을 수행할 수 있으며, 병렬 처리를 통해 성능을 개선할 수 있습니다.
스트림(Stream) 만들기
스트림을 사용하기 위해서는 먼저 스트림을 생성해야 합니다. 자바에서는 다음과 같은 방법으로 스트림을 생성할 수 있습니다.
- 컬렉션을 스트림으로 변환하기
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Stream
2. 배열을 스트림으로 변환하기
```java
int[] arr = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(arr);
- 지정된 범위의 숫자를 스트림으로 생성하기
IntStream stream = IntStream.range(1, 6);
스트림 연산하기
스트림을 생성했다면, 이제 스트림을 사용해 데이터를 처리할 수 있습니다. 스트림은 여러 가지 중간 연산과 최종 연산을 제공합니다.
중간 연산
중간 연산은 스트림을 통해 데이터를 변환하거나 필터링하는 작업을 수행합니다. 다음은 스트림의 중간 연산 예제입니다.
filter: 조건에 맞는 요소를 선택합니다.
Stream<Integer> stream = numbers.stream().filter(n -> n % 2 == 0);
map: 요소를 변환합니다.
Stream<Integer> stream = numbers.stream().map(n -> n * 2);
distinct: 중복된 요소를 제거합니다.
Stream<Integer> stream = numbers.stream().distinct();
최종 연산
최종 연산은 스트림의 데이터를 처리하고 결과를 반환하는 작업을 수행합니다. 다음은 스트림의 최종 연산 예제입니다.
count: 요소의 개수를 반환합니다.
long count = stream.count();
forEach: 각 요소를 출력합니다.
stream.forEach(System.out::println);
collect: 요소를 수집하여 새로운 컬렉션을 생성합니다.
List<Integer> result = stream.collect(Collectors.toList());
스트림 병렬 처리
스트림은 병렬 처리를 통해 작업을 수행할 수 있습니다. 병렬 처리를 활성화하려면 parallel
메소드를 호출하면 됩니다.
IntStream stream = numbers.stream().parallel();
병렬 처리를 통해 스트림의 연산을 동시에 처리할 수 있으므로, 대용량 데이터를 처리할 때 성능을 향상시킬 수 있습니다.
마무리
이 글에서는 자바 스트림(Stream)에 대해 소개하고, 스트림을 생성하고 연산하는 방법에 대해 알아보았습니다. 스트림은 컬렉션 데이터를 일관성 있게 처리하고, 병렬 처리를 통해 성능을 개선할 수 있는 강력한 도구입니다. 스트림을 잘 활용하여 보다 효율적인 자바 프로그램을 개발하는데 도움이 되길 바랍니다.
댓글