기록

[코틀린/Kotlin] 컬렉션 함수 - 2 본문

[Study]/Kotlin

[코틀린/Kotlin] 컬렉션 함수 - 2

Dannnnnn 2022. 5. 10. 23:41
반응형

지난 시간에 이어 좀 더 복잡한 기능의 컬렉션 함수를 알아보자.

 

1. associateBy

객체에서 key를 추출하여 map으로 만드는 함수

 

2. groupBy

key가 같은 아이템끼리 배열로 묶어 map으로 만드는 함수

 

3. partition

아이템에 조건을 걸어 두개의 컬렉션으로 나누는 함수

두 객체를 담을 수 있는 Pair라는 클래스 객체로 반환된다. 각각의 컬렉션을 first, second로 참조하여 사용한다.

변수 이름을 괄호 안에 두개 선언해주면 각각의 변수 이름으로 Pair를 받을 수 있다.

 

fun main() {
    
    data class Person(val name: String, val birthYear: Int)
    
    val personList = listOf(Person("유나", 1992),
                           Person("조이", 1996),
                           Person("츄", 1999),
                           Person("유나", 2003))
    
     println(personList.associateBy{ it.birthYear })
     println(personList.groupBy{ it.name })
     
     val(over98, under98) = personList.partition{ it.birthYear > 1998 }
     println(over98)
     println(under98)
     
}

 

4. flatMap

중괄호 안에서 아이템마다 새로운 컬렉션을 생성하면 이를 합쳐 하나의 컬렉션으로 반환하는 함수

 

5. getOrElse

괄호 안에 지정한 인덱스에 객체가 존재하면 해당 객체를 반환하고 없는 경우 중괄호 안에 객체를 반환하는 함수

 

6. zip

두 컬렉션에 포함된 아이템을 1:1로 Pair 클래스의 객체로 만들어 리스트에 넣어 반환하는 함수

결과 리스트의 아이템 개수는 더 작은 컬렉션을 따라가게 된다.

 

fun main() {
    
    var numbers = listOf(-3, 7, 2, -10, 1)
    
    println(numbers.flatMap{ listOf(it * 10, it + 10) })
    
    println(numbers.getOrElse(1) { 50 })
    println(numbers.getOrElse(10) { 50 })
    
    val names = listOf("A", "B", "C", "D")
    
    println(names zip numbers)
    
}

 

 

컬렉션 함수는 데이터의 조작을 더 수월하게 만들 수 있는 다양한 기능을 갖고 있다.
컬렉션에 담긴 데이터를 다룰 때는 꼭 이용해보자.

 

 

 

 

https://www.youtube.com/watch?v=q7GV68jKLVM&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=28

위 강의를 보면서 개인적으로 공부한 내용을 정리하였습니다.

반응형