[kotlin] 코틀린에서 자바 스트림 처리하기

코틀린은 자바와의 상호 운용성이 뛰어나기로 유명합니다. 코틀린으로 개발한 프로젝트에서 자바 라이브러리나 API를 사용해야 할 때가 있습니다. 이러한 상황에서 자바 스트림을 효과적으로 처리해야 할 필요가 있을 수 있습니다. 이번 블로그에서는 코틀린에서 자바의 스트림을 어떻게 처리할 수 있는지에 대해 알아보겠습니다.

1. 자바 스트림 생성하기

먼저, 자바 스트림을 생성하는 방법에 대해 알아보겠습니다.

val numbers = listOf(1, 2, 3, 4, 5)
val stream = numbers.stream()

위 예제에서는 listOf 함수를 사용하여 리스트를 생성하고, stream 메서드를 호출하여 해당 리스트를 스트림으로 변환하였습니다.

2. 중간 연산 수행하기

스트림에 중간 연산을 수행하는 방법을 살펴보겠습니다.

val result = numbers.stream()
    .filter { it > 2 }
    .map { it * 2 }
    .collect(Collectors.toList())

위 코드에서는 filter 함수를 사용하여 조건에 맞는 요소를 필터링하고, map 함수를 사용하여 각 요소에 대해 연산을 수행한 후, collect 함수를 사용하여 최종 결과를 리스트로 수집하였습니다.

3. 최종 연산 수행하기

스트림에 최종 연산을 수행하는 방법을 살펴보겠습니다.

val sum = numbers.stream()
    .reduce { acc, ele -> acc + ele }
    .get()

위 코드에서는 reduce 함수를 사용하여 모든 요소를 결합하였고, get 메서드를 호출하여 최종 결과를 얻었습니다.

4. 병렬 스트림 처리하기

코틀린에서 자바의 병렬 스트림을 처리하는 방법에 대해 알아보겠습니다.

val sum = numbers.parallelStream()
    .reduce { acc, ele -> acc + ele }
    .get()

위 코드에서는 parallelStream 함수를 사용하여 병렬 스트림을 생성하고, 이후 동일하게 reduce 함수를 사용하여 최종 결과를 얻었습니다.

코틀린에서도 자바의 스트림을 효과적으로 처리할 수 있습니다. 여기서는 간단한 예제를 통해 스트림을 생성하고, 중간 및 최종 연산을 수행하는 방법에 대해 살펴보았습니다. 코틀린과 자바와의 원활한 상호 운용성을 활용하여 다양한 라이브러리와 API를 유연하게 활용할 수 있습니다.