목표
- Collection 확장함수가 하는 일을 이해한다.
- 자유롭게 확장 함수를 이용해 데이터를 조작한다.
개요
Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 조작하기 쉽게 만들었습니다. 대표적으로 기존에는 특정한 값들을 걸러내기 위해 iteration을 돌려 하나하나 값을 확인하는 것을 코드로 써야 했습니다. 아래는 기존 방식으로 리스트(exampleList)에서 특정 값을 제외한 리스트(filteredList)를 만드는 예제입니다.
val exampleList = mutableListOf(1, 2, 3)
val filteredList = mutableListOf<Int>()
for (number in exampleList) {
if (number != 1)
filteredList.add(number)
}
하지만, Kotlin에서 확장 함수로 Java의 Stream에서 쓸 수 있던 연산과 비슷한 기능을 하는 함수형 변수를 입력으로 받는 확장 함수를 Iterable Interface와 Collection Interface에 대해 제공함에 따라 위와 같이 iteration을 돌리는 일이 더이상 필요 없어졌습니다.
*Java의 Stream에 대응되는 Kotlin 개념은 Sequence로, 지금 다루는 내용과는 차이가 있습니다. 지연 연산을 하려면 여전히 Sequence로 변환하여 연산을 수행해야 합니다.
val exampleList = mutableListOf(1, 2, 3)
val filteredList = exampleList.filter { it != 1 }
Kotlin에서 위와 같은 연산을 제공해주는 이유는 바로 함수형 프로그래밍 패러다임에 대한 지원을 위함이며, 많이 쓰이는 데이터 조작 연산들을 표준화 하여 데이터 처리에 걸리는 시간과 코드양을 획기적으로 줄여주기 위함입니다. 특히 위와 같은 함수형 프로그래밍의 최적화 또한 잘 되어 있어 해당 연산을 수행하기 위해 최소한의 메모리 공간만을 사용하게 됩니다.
목차
우리는 이 카테코리에서 다음의 내용을 다룹니다.
[Kotlin Collection] 1. Kotlin forEach 이용하여 데이터 조작하기 : Kotlin for을 대체하여 가독성 좋게 만들기
[Kotlin Collection] 1.1 Kotlin forEach, forEachIndexed 이용하여 데이터 조작하기 - 예제 포함
[Kotlin Collection] 2. Kotlin filter, take, drop 을 이용해 데이터 필터링 하기
[Kotlin Collection] 3. Kotlin map, flatMap 을 이용해 데이터 변환하기
[Kotlin Collection] 5. Kotlin reduce 를 알아보자 : 재귀적으로 수행된 결과값으로 반환 값을 만드는 함수