Kotlin Associate - Key, Value로 묶기
Notepad96
·2020. 12. 5. 22:43
1. Association
Association 함수를 사용하면 Map 형식의 <Key, Value>타입으로 값들을 묶어줄 수 있다.
만약 Class 타입을 담는 리스트가 있다.
여기서 특정 프로퍼티를 Key, Value로 선택하여 Map 형식으로 만들어 줄 수 있다.
Map 형식이기 때문에 중복된 Key는 갖을 수 없다.
2. 코 드
환경 : Kotlin Version = 1.4.20, JVM
data class Book(var name: String, var writer: String, var price: Int)
fun main(args: Array<String>) {
val arr = mutableListOf<Book>()
arr.add(Book("name1", "writer1", 12000))
arr.add(Book("name2", "writer2", 21000))
arr.add(Book("name3", "writer3", 31000))
arr.add(Book("name4", "writer4", 28000))
arr.add(Book("name4", "writer5", 23000))
println("===============1================")
var arr2 = arr.associateBy { it.name }
arr2.forEach { println(it) }
println("===============2================")
arr2.forEach { println(it.value.writer) }
println("===============3================")
val arr3 = arr.associateBy(Book::name, Book::writer) // key to value
arr3.forEach { println(it) }
println("===============4================")
val arr4 = arr.associate { it.writer to it.price }
arr4.forEach { println("key = ${it.key}, value = ${it.value}") }
}
ㄴ 1.
associateBy { it.name }
it.name를 Key로, it = List의 Book원소를 Value로 Map을 만든다.
ㄴ 2.
Value에는 리스트의 원소였던 Book 타입의 변수가 있으므로
name, writer, price와 같은 프로퍼티의 접근할 수 있다.
ㄴ 3.
associateBy( Book::name, Book::writer )
Book의 name을 Key로서, Book의 writer를 Value로서 Map 형식으로 만들어 반환 해준다.
ㄴ 4.
associate ( it.writer to it.price )
Book의 writer을 Key로서, Book의 price를 Value로서 Map 형식으로 만들어 반환 해준다.
3. 참 조
'Kotlin > Collections' 카테고리의 다른 글
Kotlin groupBy - 조건에 따라 리스트 원소 묶기 (0) | 2020.12.06 |
---|---|
Kotlin 중복 원소 제거 - distinct (0) | 2020.12.03 |
Kotlin PriorityQueue(우선순위 큐) (0) | 2020.12.03 |
Kotlin Deque(덱 or 디큐) (0) | 2020.12.02 |
Kotlin Pair, Triple Val cannot be reassigned - Pair 값 수정 (0) | 2020.12.02 |