[Kotlin] 컬렉션 함수(2) 설명 & 예제
- Language/Kotlin
- 2021. 2. 16.
728x90
그 외 컬렉션 함수 설명
-
associateBy
- 아이템에서 key를 추출하여 map으로 변환하는 함수
collection.associateBy { it.name }
- key로 사용할 name을 걸어준다 -> 자동으로 map 으로 변환하여 반환
-
groupBy
- key가 같은 아이템끼리 배열로 묶어 map 으로 만드는 함수
collection.groupBy { it.birthYear }
- 특정한 값이 같은 객체를 배열로 묶어 반환
-
partition
- 조건을 걸어 true, false 나눠준다
collection.partition { it.birthYear > 2002 }
- 두 컬렉션은 Pair라는 객체로 반환 -> frist, second 로 참조
val (over2002, under2002) = collection.partiton { 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)
)
//{1992=Person(name=유나, birthYear=1992), 1996=Person(name=조이, birthYear=1996), 1999=Person(name=츄, birthYear=1999), 2003=Person(name=유나, birthYear=2003)}
println(personList.associateBy { it.birthYear })
//{유나=[Person(name=유나, birthYear=1992), Person(name=유나, birthYear=2003)], 조이=[Person(name=조이, birthYear=1996)], 츄=[Person(name=츄, birthYear=1999)]}
println(personList.groupBy { it.name })
val (over98, under98) = personList.partition { it.birthYear > 1998 }
//[Person(name=츄, birthYear=1999), Person(name=유나, birthYear=2003)]
println(over98)
//[Person(name=유나, birthYear=1992), Person(name=조이, birthYear=1996)]
println(under98)
}
-
flatMap
- 아이템마다 만들어진 컬렉션을 합쳐서 반환하는 함수
collection.flatMap { listOf(it * 3, it + 3 }
-
getOrElse
- 인덱스 위치에 아이템이 있으면 아이템을 반환하고 아닌 경우 지정한 기본값을 반환
collection.getOrElse(1) { 50 }
-
zip
- 컬렉션 두개의 아이템을 1:1로 매칭하여 새 컬렉션을 만들어 줌
- Pair 클래스에 넣어 -> List에 넣어 반환
예제
fun main() {
val numbers = listOf(-3, 7, 2, -10, 1)
//[-30, 7, 70, 17, 20, 12, -100, 0, 10, 11]
//list 새로 만들어 반환
println(numbers.flatMap { listOf(it * 10, it + 10) })
println(numbers.getOrElse(1) { 50 }) //7
println(numbers.getOrElse(10) { 50 }) //50
val names = listOf("A", "B", "C", "D")
//[(A, -3), (B, 7), (C, 2), (D, -10)]
println(names zip numbers)
}
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 비트연산 설명 & 예제 (0) | 2021.02.19 |
---|---|
[Kotlin] 변수의 고급 기술(상수, lateinit, lazy) 설명 & 예제 (0) | 2021.02.18 |
[Kotlin] 컬렉션 함수(1) 설명 & 예제 (0) | 2021.02.16 |
[Kotlin] Set & Map 설명 & 예제 (0) | 2021.02.15 |
[Kotlin] Data Class와 Enum Class 설명 & 예제 (0) | 2021.02.15 |