АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
176 of 1310 menu
Бесплатный тренинг по JavaScript: работа с Drag-and-Drop. Начало 2 октября. Жми для записи!

Интерфейс 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,
    реализация мапы на основе хэш-таблицы