Image
Kotlin/Collection

[Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기

목표

  • 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)
}

 

그림1. Collection의 상속 구조

 

 하지만, 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] 4. Kotlin groupBy, zip, distinct 를 이용하기 : groupby를 이용해 그룹핑, zip을 이용해 조합, distinct를 이용해 중복제거하기

[Kotlin Collection] 5. Kotlin reduce 를 알아보자 : 재귀적으로 수행된 결과값으로 반환 값을 만드는 함수

 

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com