Функция putIfAbsent

Функция putIfAbsent добавляет пару ключ-значение в словарь только в том случае, если указанный ключ отсутствует в словаре. Если ключ уже существует, функция возвращает текущее значение, связанное с ключом, и не изменяет словарь. Если ключ отсутствует, функция добавляет новую пару и возвращает null.

Синтаксис

kotlinfun putIfAbsent(key: K, value: V): V?

Пример

Добавим элемент в словарь, если ключ отсутствует:

kotlinval map = mutableMapOf("a" to 1, "b" to 2)
val res = map.putIfAbsent("c", 3)

println(map)
println(res)

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

kotlin{a=1, b=2, c=3}
null

Пример

Попробуем добавить элемент с существующим ключом:

kotlinval map = mutableMapOf("a" to 1, "b" to 2)
val res = map.putIfAbsent("a", 10)

println(map)
println(res)

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

kotlin{a=1, b=2}
1

Пример

Использование putIfAbsent с числовыми ключами:

kotlinval map = mutableMapOf(1 to "one", 2 to "two")
val res1 = map.putIfAbsent(3, "three")
val res2 = map.putIfAbsent(1, "first")

println(map)
println("Result 1: $res1")
println("Result 2: $res2")

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

kotlin{1=one, 2=two, 3=three}
Result 1: null
Result 2: one

Пример

Работа с null значениями:

kotlinval map = mutableMapOf("a" to null, "b" to "value")
val res1 = map.putIfAbsent("a", "new value")
val res2 = map.putIfAbsent("c", "another value")

println(map)
println("Result 1: $res1")
println("Result 2: $res2")

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

kotlin{a=null, b=value, c=another value}
Result 1: null
Result 2: null

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

  • функцию getOrPut,
    которая получает значение или добавляет новое
  • функцию getOrDefault,
    которая получает значение или возвращает значение по умолчанию
  • функцию getOrElse,
    которая получает значение или вычисляет его через лямбду
  • функцию put,
    которая добавляет или заменяет элемент в словаре