[kotlin] 코틀린에서의 함수형 데이터 처리와 변환

최근 코틀린에서는 함수형 프로그래밍 스타일을 채택하고 있는데, 이에 따라 데이터 처리 및 변환도 함수형으로 할 수 있는 방법이 제공됩니다. 함수형 프로그래밍을 사용하면 코드를 간결하게 하고, 불변성을 유지할 수 있어서 코드의 안정성과 가독성을 높여줍니다.

Map과 Filter

코틀린에서는 mapfilter 함수를 사용하여 컬렉션의 요소를 변환하고 걸러낼 수 있습니다.

예를 들어, 다음은 숫자 리스트에서 각 숫자를 제곱한 새로운 리스트를 생성하는 간단한 예제입니다.

val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }

여기서 map 함수를 사용하여 각 요소를 제곱한 새로운 리스트를 만들었습니다.

또한 filter 함수를 사용하여 조건에 맞는 요소만 걸러낼 수 있습니다.

val evenNumbers = squaredNumbers.filter { it % 2 == 0 }

위의 예제에서는 filter 함수를 사용하여 짝수만 걸러낸 새로운 리스트를 생성했습니다.

FlatMap

때로는 중첩된 구조의 컬렉션을 하나의 단일 컬렉션으로 변환해야 할 때가 있는데, 이때 flatMap 함수를 사용할 수 있습니다.

예를 들어, 다음은 중첩된 리스트를 평탄화한 새로운 리스트를 만드는 예제입니다.

val nestedList = listOf(listOf(1, 2, 3), listOf(4, 5, 6), listOf(7, 8, 9))
val flattenedList = nestedList.flatMap { it }

flatMap 함수를 사용하여 중첩된 리스트를 평탄화하여 새로운 리스트를 생성했습니다.

Reduce

reduce 함수를 사용하면 컬렉션의 요소를 반복하면서 축소된 값을 생성할 수 있습니다.

예를 들어, 다음은 리스트의 모든 요소를 더한 총합을 구하는 예제입니다.

val sum = numbers.reduce { acc, i -> acc + i }

위의 예제에서는 reduce 함수를 사용하여 모든 요소를 더한 총합을 구했습니다.

결론

함수형 데이터 처리 및 변환 기법을 사용하면 코드를 더 간결하게 작성할 수 있으며, 컬렉션을 다룰 때 불변성을 유지하면서 안정성과 가독성을 높일 수 있습니다. 코틀린에서는 map, filter, flatMap, reduce와 같은 함수형 프로그래밍을 지원하는 다양한 함수들을 제공하여 데이터 처리를 보다 효율적으로 할 수 있습니다.

참고 자료