테크과학! DiMo
개발 환경: play.kotlinlang.org
associateBy
객체에서 key를 추출하여 map으로 변환하는 함수
collection.associateBy{ it.name }
groupBy
key가 같은 아이템끼리 배열로 묶어 map으로 만드는 함수
partition
아이템에 조건을 걸어 두개의 컬렉션으로 나누어 줌. 두 컬렉션은 두 객체를 담을 수 있는 Pair라는 클래스 객체로 반환
되므로 각각의 컬렉션을 first, second로 참조하여 사용.
또는 Pair를 직접 받아줄수 있도록 변수 이름을 괄호 안에 두 개 선언해주면 각각의 변수 이름으로 받을 수 있다.
val (over2002, under2002) = collection.partition{ it.birthYear > 2002 }
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)
}
Output:
{1992=Person(name=유나, birthYear=1992), 1996=Person(name=조이, birthYear=1996), 1999=Person(name=츄, birthYear=1999), 2003=Person(name=유나, birthYear=2003)}
{유나=[Person(name=유나, birthYear=1992), Person(name=유나, birthYear=2003)], 조이=[Person(name=조이, birthYear=1996)], 츄=[Person(name=츄, birthYear=1999)]}
[Person(name=츄, birthYear=1999), Person(name=유나, birthYear=2003)]
[Person(name=유나, birthYear=1992), Person(name=조이, birthYear=1996)]
flatMap
아이템마다 만들어진 컬렉션을 합쳐서 반환하는 함수
collection.flatMap{ listOf(it * 3, it + 3)}
중괄호 안에서 아이템마다 새로운 컬렉션을 생성하면 이를 합쳐서 하나의 컬렉션으로 반환해준다.
getOrElse
인덱스 위치에 아이템이 있으면 아이템을 반환하고 아닌 경우 지정한 기본 값을 반환하는 함수
collection.getOrElse() { }
zip
컬렉션 두 개의 아이템을 1:1로 매칭하여(Pair 클래스의 객체로 만들어 리스트에 넣어) 새 컬렉션을 만들어 줌. 이 때 결과
List의 아이템의 갯수는 더 작은 컬렉션을 따라가게 됨.
collectionA zip collectionB
fun main() {
val numbers = listOf(-3, 7, 2, -10, 1)
println(numbers.flatMap { listOf(it * 10, it + 5)})
println(numbers.getOrElse(1){50})
println(numbers.getOrElse(10){50})
val names = listOf("A", "B", "C", "D")
println(names zip numbers)
}
Output:
[-30, 2, 70, 12, 20, 7, -100, -5, 10, 6]
7
50
[(A, -3), (B, 7), (C, 2), (D, -10)]
'Kotlin > 기본 문법' 카테고리의 다른 글
코틀린 강좌 #29 비트연산 (0) | 2020.12.24 |
---|---|
코틀린 강좌 #28 변수의 고급 기술. 상수, lateinit, lazy (0) | 2020.12.24 |
코틀린 강좌 #26 컬렉션 함수, 첫번째 이야기! (0) | 2020.12.24 |
코틀린 강좌 #25 컬렉션 2탄, Set과 Map (0) | 2020.12.24 |
코틀린 강좌 #24 Data Class 와 Enum Class (0) | 2020.12.24 |