[java] 스트림을 이용한 병렬 편평화 방법
소개
스트림(Stream)은 자바 8에서 추가된 기능으로, 컬렉션을 다루는 작업을 간결하고 효율적으로 처리할 수 있게 해줍니다. 스트림은 요소를 처리하는데 있어서 병렬 처리(parallel processing)를 지원하여 작업 속도를 향상시킬 수 있습니다.
병렬 편평화(parallel flattening)란 스트림을 이용하여 다차원 컬렉션을 단일 차원으로 변환하는 방법입니다. 예를 들어, List<List<Integer>>
와 같은 2차원 리스트를 List<Integer>
로 변환하는 것을 말합니다.
이 글에서는 자바의 스트림을 이용하여 병렬 편평화 방법에 대해 알아보겠습니다.
병렬 편평화 방법
자바의 스트림을 이용하여 병렬 편평화를 수행하는 방법은 다음과 같습니다.
List<List<Integer>> nestedList = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5, 6),
Arrays.asList(7, 8, 9)
);
List<Integer> flattenedList = nestedList.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(flattenedList);
위의 예시 코드에서는 List<List<Integer>>
형태인 nestedList
를 flatMap
을 이용하여 편평화시킨 후 toList
를 사용하여 List<Integer>
로 변환하여 결과를 출력합니다.
스트림을 병렬 처리하려면 parallel()
메서드를 호출하여 스트림을 병렬 스트림(parallel stream)으로 변환하는 것도 가능합니다.
List<Integer> flattenedList = nestedList.parallelStream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
결론
스트림을 이용하여 병렬 편평화를 수행하는 방법을 알아보았습니다. 병렬 처리를 통해 대용량 데이터의 처리를 효율적으로 수행할 수 있으며, 코드의 가독성과 유지보수성도 향상됩니다.
참고: Java Stream API Documentation