자바에서 스트림은 컬렉션이나 배열과 같은 데이터 요소들의 시퀀스를 처리하는데 매우 유용한 기능을 제공합니다. 스트림은 병렬 처리를 통해 데이터를 효율적으로 처리할 수 있어 많은 양의 데이터를 다루는 경우에 특히 유용합니다. 이번에는 스트림을 이용해 병렬 필터링을 하는 방법을 알아보겠습니다.
필터링을 위한 스트림 생성
먼저, 필터링을 위해 스트림을 생성해야 합니다. 이 예제에서는 List
의 요소들 중에서 특정 조건을 만족하는 요소들만 필터링할 것입니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Stream<Integer> stream = numbers.parallelStream().filter(n -> n % 2 == 0);
parallelStream()
은 병렬 스트림을 생성하기 위한 메소드입니다. 스트림의 filter()
메소드를 이용해 특정 조건을 만족하는 요소들로 필터링할 수 있습니다. 위의 예제에서는 짝수인 요소들만 필터링합니다.
병렬 처리
스트림을 이용한 병렬 필터링을 위해 앞서 생성한 스트림에 parallel()
메소드를 호출합니다.
Stream<Integer> parallelStream = stream.parallel();
스트림의 소스가 이미 병렬 스트림인 경우에는 별도로 parallel()
메소드를 호출할 필요가 없습니다.
결과 수집
마지막으로, 필터링된 결과를 수집하여 사용합니다. 스트림의 collect()
메소드를 이용해 필터링된 요소들을 원하는 방식으로 수집할 수 있습니다.
List<Integer> filteredNumbers = parallelStream.collect(Collectors.toList());
위의 예제에서는 필터링된 요소들을 리스트로 수집합니다.
결론
자바의 스트림을 이용한 병렬 필터링은 많은 양의 데이터를 효율적으로 처리할 수 있는 강력한 기능입니다. 스트림의 parallelStream()
메소드를 이용해 병렬 스트림을 생성하고, filter()
메소드를 이용해 필요한 요소들을 필터링한 후, collect()
메소드를 이용해 결과를 수집하는 방식으로 병렬 필터링을 구현할 수 있습니다.
더 자세한 내용은 다음 자바 공식 문서를 참고하시길 바랍니다: