Learn about mapping and filtering a collection.
Implement the following extension functions using the map and filter functions:
val numbers = listOf(1, -1, 2)
numbers.filter { it > 0 } == listOf(1, 2)
numbers.map { it * it } == listOf(1, 1, 4)
// Find all the different cities the customers are from
fun Shop.getCustomerCities(): Set<City> =
TODO()
// Find the customers living in a given city
fun Shop.getCustomersFrom(city: City): List<Customer> =
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
}
// Find all the different cities the customers are from
fun Shop.getCustomerCities(): Set<City> =
customers.map { it.city }.toSet()
// Find the customers living in a given city
fun Shop.getCustomersFrom(city: City): List<Customer> =
customers.filter { it.city.equals(city) }
컬렉션 API인 map
과 filter
함수를 사용하여 컬렉션을 변환하고 필터링하는 방법에 대한 문제이다.
map
함수 : 각 원소를 원하는 형태로 변환한 결과를 모아서 새로운 컬렉션 반환
filter
함수 : 주어진 조건문에 만족하는 원소만으로 이루어진 새로운 컬렉션 반환
요구사항 1
customers.map { it.city }
: 고객 리스트(customers
)에서 각 고객의 도시(city
)를 추출하여 새로운 리스트를 생성한다..toSet()
: 생성한 리스트를 Set
으로 변환하여 중복을 제거하고, 최종적으로 서로 다른 도시들의 집합을 반환한다.요구사항 2
City
)에 거주하는 고객들을 필터링하기 위해 filter
함수를 사용한다.filter
함수를 통해서 주어진 조건에 맞는 요소들만 포함하는 새로운 리스트를 반환한다.