Интерфейс MapWithDefault
Интерфейс MapWithDefault
расширяет базовый интерфейс Map
,
добавляя функциональность возврата значения по умолчанию при обращении
к несуществующему ключу. В первый параметр функции получения значения
по умолчанию передается ключ, для которого значение отсутствует в мапе.
Импорт
import kotlin.collections.MapWithDefault
Синтаксис
interface MapWithDefault<K, out V> : Map<K, V> {
val map: Map<K, V>
fun getOrImplicitDefault(key: K): V
}
Пример
Создадим мапу с значением по умолчанию и получим значение для существующего и несуществующего ключа:
val originalMap = mapOf("a" to 1, "b" to 2)
val mapWithDefault = originalMap.withDefault { key ->
key.length * 10
}
println(mapWithDefault["a"])
println(mapWithDefault["c"])
Результат выполнения кода:
Int 1
Int 10
Пример
Использование метода getOrImplicitDefault
для явного
получения значения с обработкой отсутствующего ключа:
val map = mapOf("apple" to 5, "banana" to 7).withDefault { 0 }
val value1 = map.getOrImplicitDefault("apple")
val value2 = map.getOrImplicitDefault("orange")
println(value1)
println(value2)
Результат выполнения кода:
Int 5
Int 0
Пример
Создание изменяемой мапы с значением по умолчанию:
val mutableMap = mutableMapOf(1 to "one", 2 to "two")
.withDefault { key -> "Number $key" }
println(mutableMap[1])
println(mutableMap[3])
mutableMap[3] = "three"
println(mutableMap[3])
Результат выполнения кода:
String "one"
String "Number 3"
String "three"
Пример
Использование значения по умолчанию, зависящего от ключа:
val priceMap = mapOf("bread" to 50, "milk" to 80)
.withDefault { product ->
if (product.length > 4) 100 else 60
}
println(priceMap["bread"])
println(priceMap["butter"])
println(priceMap["cheese"])
Результат выполнения кода:
Int 50
Int 60
Int 100
Смотрите также
-
интерфейс
Map
,
базовый интерфейс для работы с ассоциативными массивами -
интерфейс
MutableMap
,
интерфейс для изменяемых ассоциативных массивов -
интерфейс
MutableMapWithDefault
,
интерфейс для изменяемых мап со значением по умолчанию -
класс
HashMap
,
реализация мапы на основе хэш-таблицы