Learn about [association]. Implement the following functions using [associateBy]
val list = listOf("abc", "cdef")
list.associateBy { it.first() } ==
mapOf('a' to "abc", 'c' to "cdef")
list.associateWith { it.length } ==
mapOf("abc" to 3, "cdef" to 4)
list.associate { it.first() to it.length } ==
mapOf('a' to 3, 'c' to 4)
// Build a map from the customer name to the customer
fun Shop.nameToCustomerMap(): Map<String, Customer> =
TODO()
// Build a map from the customer to their city
fun Shop.customerToCityMap(): Map<Customer, City> =
TODO()
// Build a map from the customer name to their city
fun Shop.customerNameToCityMap(): Map<String, City> =
TODO()
data class Shop(val name: String, val customers: List<Customer>)
data class Customer(val name: String, val city: City, val orders: List<Order>) {
override fun toString() = "$name from ${city.name}"
}
data class Order(val products: List<Product>, val isDelivered: Boolean)
data class Product(val name: String, val price: Double) {
override fun toString() = "'$name' for $price"
}
data class City(val name: String) {
override fun toString() = name
}
// Build a map from the customer name to the customer
fun Shop.nameToCustomerMap(): Map<String, Customer> =
customers.associateBy { it.name }
// Build a map from the customer to their city
fun Shop.customerToCityMap(): Map<Customer, City> =
customers.associateWith { it.city }
// Build a map from the customer name to their city
fun Shop.customerNameToCityMap(): Map<String, City> =
customers.associate { it.name to it.city }
associateBy
, associateWith
, associate
함수를 사용하여 Map으로 변환하는 문제이다.
Map
생성Map
생성Map
생성먼저 각 함수에 대해서 간단하게 알아보았다.
associateBy
: 함수에 전달하는 요소를 Map
의 키로 사용하고, 리스트의 값은 값으로 변환한다.list.associateBy { it.first() }
는 각 요소의 첫번째 글자를 키로 하고, 요소 자체를 값으로 만든다.associateWith
: 리스트의 각 요소를 기준으로 함수의 전달하는 요소로 Map
의 값을 생성하고, 리스트의 요소를 키로 저장한다.list.associateWith { it.length }
는 각 요소를 키로 하고, 길이를 값으로 가진다.associate
: 리스트의 각 요소에서 키와 값을 직접 생성하여 Map
을 만든다.list.associate { it.first() to it.length }
는 요소의 첫 번째 글자를 키로, 요소의 길이를 값으로 만든다.요구사항 1
associateBy
요구사항 2
associateWith
요구사항 3
associate