Интерфейс MapWithDefault

Интерфейс MapWithDefault расширяет базовый интерфейс Map, добавляя функциональность возврата значения по умолчанию при обращении к несуществующему ключу. В первый параметр функции получения значения по умолчанию передается ключ, для которого значение отсутствует в мапе.

Импорт

kotlinimport kotlin.collections.MapWithDefault

Синтаксис

kotlininterface MapWithDefault<K, out V> : Map<K, V> {
  val map: Map<K, V>
  fun getOrImplicitDefault(key: K): V
}

Пример

Создадим мапу с значением по умолчанию и получим значение для существующего и несуществующего ключа:

kotlinval originalMap = mapOf("a" to 1, "b" to 2)
val mapWithDefault = originalMap.withDefault { key -> 
  key.length * 10 
}

println(mapWithDefault["a"])
println(mapWithDefault["c"])

Результат выполнения кода:

kotlinInt 1
Int 10

Пример

Использование метода getOrImplicitDefault для явного получения значения с обработкой отсутствующего ключа:

kotlinval map = mapOf("apple" to 5, "banana" to 7).withDefault { 0 }

val value1 = map.getOrImplicitDefault("apple")
val value2 = map.getOrImplicitDefault("orange")

println(value1)
println(value2)

Результат выполнения кода:

kotlinInt 5
Int 0

Пример

Создание изменяемой мапы с значением по умолчанию:

kotlinval mutableMap = mutableMapOf(1 to "one", 2 to "two")
  .withDefault { key -> "Number $key" }

println(mutableMap[1])
println(mutableMap[3])

mutableMap[3] = "three"
println(mutableMap[3])

Результат выполнения кода:

kotlinString "one"
String "Number 3"
String "three"

Пример

Использование значения по умолчанию, зависящего от ключа:

kotlinval 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"])

Результат выполнения кода:

kotlinInt 50
Int 60
Int 100

Смотрите также

  • интерфейс Map,
    базовый интерфейс для работы с ассоциативными массивами
  • интерфейс MutableMap,
    интерфейс для изменяемых ассоциативных массивов
  • интерфейс MutableMapWithDefault,
    интерфейс для изменяемых мап со значением по умолчанию
  • класс HashMap,
    реализация мапы на основе хэш-таблицы