get Or Put
Требования к платформе и версии: Common (1.0)
inline fun <K, V> MutableMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V
Возвращает значение для заданного key, если оно присутствует и не является null. В противном случае вызывает функцию defaultValue, помещает её результат в отображение по заданному ключу и возвращает результат вызова.
Примечание: не рекомендуется использовать эту функцию, если предполагается, что отображение содержит значения null. Вместо этого используйте getOrPutIfNull или getOrPutIfMissing, чтобы яснее выразить, что следует делать, когда ключ сопоставлен со значением null.
Если заданного key нет в этом отображении или ему сопоставлено значение null, результат defaultValue, даже если он null, помещается в отображение по этому ключу. Если defaultValue выбрасывает исключение, оно выбрасывается повторно.
Обратите внимание, что атомарность операции не гарантируется, если отображение изменяется одновременно.
Исключения
если указанный key или результат defaultValue равен null, а это отображение не поддерживает ключи или значения null.
Примеры
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val map = mutableMapOf<String, Int?>()
println(map.getOrPut("x") { 2 }) // 2
// subsequent calls to getOrPut do not evaluate the default value
// since the first getOrPut has already stored value 2 in the map
println(map.getOrPut("x") { 3 }) // 2
// however, null value mapped to a key is treated the same as the missing value
println(map.getOrPut("y") { null }) // null
// so in that case the default value is evaluated
println(map.getOrPut("y") { 42 }) // 42
//sampleEnd
}
Требования к платформе и версии: JVM (1.0)
inline fun <K, V> ConcurrentMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V
Возвращает значение для заданного key, если оно присутствует и не является null. В противном случае вызывает функцию defaultValue, помещает её результат в отображение по заданному ключу и возвращает результат вызова.
Примечание: не рекомендуется использовать эту функцию, если предполагается, что отображение содержит значения null. Вместо этого используйте getOrPutIfNull или getOrPutIfMissing, чтобы яснее выразить, что следует делать, когда ключ сопоставлен со значением null.
Если заданного key нет в этом отображении или ему сопоставлено значение null, результат defaultValue, даже если он null, помещается в отображение по этому ключу. Если defaultValue выбрасывает исключение, оно выбрасывается повторно.
Этот метод гарантирует, что значение не будет помещено в отображение, если ключ в нём уже есть, однако функция defaultValue может быть вызвана, даже если ключ уже содержится в отображении.
Примеры
import kotlin.test.*
import java.util.*
fun main() {
//sampleStart
val map = mutableMapOf<String, Int?>()
println(map.getOrPut("x") { 2 }) // 2
// subsequent calls to getOrPut do not evaluate the default value
// since the first getOrPut has already stored value 2 in the map
println(map.getOrPut("x") { 3 }) // 2
// however, null value mapped to a key is treated the same as the missing value
println(map.getOrPut("y") { null }) // null
// so in that case the default value is evaluated
println(map.getOrPut("y") { 42 }) // 42
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/get-or-put.html