Map
Требования к платформе и версии: Common (1.0)
expect interface Map<K, out V>
Коллекция, содержащая пары объектов (ключи и значения) и позволяющая получать значение, соответствующее каждому ключу, а также проверять, содержит ли коллекция определённый ключ или значение. Карты также позволяют перебирать ключи, значения или пары «ключ-значение» (записи). На основе этой функциональности строятся сложные операции, предоставляемые в виде функций-расширений kotlin.collections.
Ключи карты уникальны: для каждого ключа карта содержит только одно значение. При этом одно и то же значение может быть связано с несколькими уникальными ключами.
Способ определения уникальности ключей в Map зависит от реализации. Если не указано иное, реализации Map обычно различают элементы с помощью Any.equals. Однако это не единственный способ различать элементы: некоторые реализации могут использовать ссылочное равенство или сравнивать элементы по некоторым их свойствам. Рекомендуется явно указывать, как класс, реализующий Map, различает элементы.
Способ обработки ключей и значений null в Map также зависит от реализации: некоторые реализации Map могут их поддерживать, а другие — нет. При реализации Map рекомендуется явно определять политику допустимости null для ключей и значений.
Map не гарантирует определённый порядок перебора ключей, значений или записей. Однако конкретные реализации могут задавать фиксированный порядок перебора, например, когда в некотором смысле сначала посещаются «меньшие» ключи, а затем «большие». В этом случае рекомендуется явно документировать гарантии порядка для реализации Map.
В отличие от реализаций Collection, реализации Map должны переопределять функции Any.toString, Any.equals и Any.hashCode и предоставлять реализации, удовлетворяющие следующим условиям:
Map.toString должна возвращать строку, содержащую строковое представление содержащихся пар «ключ-значение» в порядке перебора.
Map.equals должна считать две карты равными тогда и только тогда, когда они содержат одинаковые ключи, а значения, связанные с этими ключами, равны. В отличие от некоторых других реализаций
equals, Map.equals должна считать две карты равными, даже если они являются экземплярами разных классов; единственное требование состоит в том, чтобы обе карты реализовывали интерфейс Map.Map.hashCode должна вычисляться как сумма хеш-кодов Entry, а хеш-код записи должен вычисляться как исключающее ИЛИ (XOR) хеш-кодов, соответствующих ключу и значению:
var hashCode: Int = 0
for ((k, v) in entries) hashCode += k.hashCode() xor v.hashCode()
Функции этого интерфейса обеспечивают только доступ к карте для чтения; доступ для чтения и записи предоставляется через интерфейс MutableMap.
Параметры типа
тип ключей карты. Тип ключа карты инвариантен, поскольку карта может принимать ключ в качестве параметра (например, в containsKey) и возвращать его в наборе keys.
тип значений карты. Тип значения карты ковариантен.
Наследники
Требования к платформе и версии: JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)
actual interface Map<K, out V>
Коллекция, содержащая пары объектов (ключи и значения) и позволяющая получать значение, соответствующее каждому ключу, а также проверять, содержит ли коллекция определённый ключ или значение. Карты также позволяют перебирать ключи, значения или пары «ключ-значение» (записи). На основе этой функциональности строятся сложные операции, предоставляемые в виде функций-расширений kotlin.collections.
Ключи карты уникальны: для каждого ключа карта содержит только одно значение. При этом одно и то же значение может быть связано с несколькими уникальными ключами.
Способ определения уникальности ключей в Map зависит от реализации. Если не указано иное, реализации Map обычно различают элементы с помощью Any.equals. Однако это не единственный способ различать элементы: некоторые реализации могут использовать ссылочное равенство или сравнивать элементы по некоторым их свойствам. Рекомендуется явно указывать, как класс, реализующий Map, различает элементы.
Способ обработки ключей и значений null в Map также зависит от реализации: некоторые реализации Map могут их поддерживать, а другие — нет. При реализации Map рекомендуется явно определять политику допустимости null для ключей и значений.
В отличие от реализаций Collection, реализации Map должны переопределять функции Any.toString, Any.equals и Any.hashCode и предоставлять реализации, удовлетворяющие следующим условиям:
Map.toString должна возвращать строку, содержащую строковое представление содержащихся пар «ключ-значение» в порядке перебора.
Map.equals должна считать две карты равными тогда и только тогда, когда они содержат одинаковые ключи, а значения, связанные с этими ключами, равны. В отличие от некоторых других реализаций
equals, Map.equals должна считать две карты равными, даже если они являются экземплярами разных классов; единственное требование состоит в том, чтобы обе карты реализовывали интерфейс Map.Map.hashCode должна вычисляться как сумма хеш-кодов Entry, а хеш-код записи должен вычисляться как исключающее ИЛИ (XOR) хеш-кодов, соответствующих ключу и значению:
var hashCode: Int = 0
for ((k, v) in entries) hashCode += k.hashCode() xor v.hashCode()
Функции этого интерфейса обеспечивают только доступ к карте для чтения; доступ для чтения и записи предоставляется через интерфейс MutableMap.
Параметры типа
тип ключей карты. Тип ключа карты инвариантен, поскольку карта может принимать ключ в качестве параметра (например, в containsKey) и возвращать его в наборе keys.
тип значений карты. Тип значения карты ковариантен.
Наследники
Требования к платформе и версии: JVM (1.0)
actual interface Map<K, out V>
Коллекция, содержащая пары объектов (ключи и значения) и позволяющая получать значение, соответствующее каждому ключу, а также проверять, содержит ли коллекция определённый ключ или значение. Карты также позволяют перебирать ключи, значения или пары «ключ-значение» (записи). На основе этой функциональности строятся сложные операции, предоставляемые в виде функций-расширений kotlin.collections.
Ключи карты уникальны: для каждого ключа карта содержит только одно значение. При этом значения могут повторяться: с одним и тем же значением могут быть связаны несколько уникальных ключей.
Способ определения уникальности ключей в Map зависит от реализации. Если не указано иное, реализации Map обычно различают элементы с помощью Any.equals. Однако это не единственный способ различать элементы: некоторые реализации могут использовать ссылочное равенство или сравнивать элементы по некоторым их свойствам. Рекомендуется явно указывать, как класс, реализующий Map, различает элементы.
Способ обработки ключей и значений null в Map также зависит от реализации: некоторые реализации Map могут их поддерживать, а другие — нет. При реализации Map рекомендуется явно определять политику допустимости null для ключей и значений.
В отличие от реализаций Collection, реализации Map должны переопределять функции Any.toString, Any.equals и Any.hashCode и предоставлять реализации, удовлетворяющие следующим условиям:
Map.toString должна возвращать строку, содержащую строковое представление содержащихся пар «ключ-значение» в порядке перебора.
Map.equals должна считать две карты равными тогда и только тогда, когда они содержат одинаковые ключи, а значения, связанные с этими ключами, равны.
Map.hashCode должна вычисляться как сумма хеш-кодов Entry, а хеш-код записи должен вычисляться как исключающее ИЛИ (XOR) хеш-кодов, соответствующих ключу и значению:
var hashCode: Int = 0
for ((k, v) in entries) hashCode += k.hashCode() xor v.hashCode()
Функции этого интерфейса обеспечивают только доступ к карте для чтения; доступ для чтения и записи предоставляется через интерфейс MutableMap.
По соглашению, реализации Map обычно также реализуют java.io.Serializable.
Параметры типа
тип ключей карты. Тип ключа карты инвариантен, поскольку карта может принимать ключ в качестве параметра (например, в containsKey) и возвращать его в наборе keys.
тип значений карты. Тип значения карты ковариантен.
Наследники
Типы
Свойства
Требования к платформе и версии: Common (1.0), JS (1.1), JVM (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)
expect abstract val values: Collection<V>
Возвращает неизменяемую Collection всех значений этой карты. Обратите внимание, что эта коллекция может содержать повторяющиеся значения.
Функции
Платформы и требования к версии: Common (1.0)
fun <K, V> Map<out K, V>.any(): Boolean
Возвращает true, если карта содержит хотя бы один элемент.
inline fun <K, V> Map<out K, V>.any(predicate: (Map.Entry<K, V>) -> Boolean): Boolean
Возвращает true, если хотя бы один элемент соответствует заданному предикату.
Платформы и требования к версии: JS (2.0)
open fun asJsReadonlyMapView(): JsReadonlyMap<K, V>
Возвращает представление с методами JsReadonlyMap, позволяющими использовать его в JavaScript как обычную карту только для чтения. Структурные изменения базовой карты синхронизируются с представлением.
Платформы и требования к версии: Common (1.0), JS (1.1), JVM (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)
expect abstract fun containsKey(key: K): Boolean
Возвращает true, если карта содержит указанный ключ.
Платформы и требования к версии: Common (1.0), JS (1.1), JVM (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)
expect abstract fun containsValue(value: V): Boolean
Возвращает true, если карта связывает один или несколько ключей с указанным значением.
Платформы и требования к версии: Common (1.5)
inline fun <K, V, R : Any> Map<out K, V>.firstNotNullOf(transform: (Map.Entry<K, V>) -> R?): R
Возвращает первое ненулевое значение, полученное при применении функции transform к элементам этой карты в порядке итерации, или выбрасывает NoSuchElementException, если ненулевое значение не было получено.
Платформы и требования к версии: Common (1.5)
inline fun <K, V, R : Any> Map<out K, V>.firstNotNullOfOrNull(transform: (Map.Entry<K, V>) -> R?): R?
Возвращает первое ненулевое значение, полученное при применении функции transform к элементам этой карты в порядке итерации, или null, если ненулевое значение не было получено.
Платформы и требования к версии: Common (1.0)
inline fun <K, V, R> Map<out K, V>.flatMap(transform: (Map.Entry<K, V>) -> Iterable<R>): List<R>
Возвращает единый список всех элементов, полученных из результатов вызова функции transform для каждого элемента исходной карты.
inline fun <K, V, R> Map<out K, V>.flatMap(transform: (Map.Entry<K, V>) -> Sequence<R>): List<R>
Возвращает единый список всех элементов, полученных из результатов вызова функции transform для каждого элемента исходной карты.
Платформы и требования к версии: Common (1.0)
inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.flatMapTo(destination: C, transform: (Map.Entry<K, V>) -> Iterable<R>): C
Добавляет все элементы, полученные из результатов вызова функции transform для каждого элемента исходной карты, в указанное назначение.
inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.flatMapTo(destination: C, transform: (Map.Entry<K, V>) -> Sequence<R>): C
Добавляет все элементы, полученные из результатов вызова функции transform для каждого элемента исходной карты, в указанное назначение.
Платформы и требования к версии: JVM (1.2)
inline fun <K, V> Map<out K, V>.getOrDefault(key: K, defaultValue: V): V
Возвращает значение, связанное с указанным ключом, или defaultValue, если в этой карте нет соответствия для данного ключа.
Платформы и требования к версии: Common (1.1)
fun <K, V> Map<K, V>.getValue(key: K): V
Возвращает значение для заданного ключа или выбрасывает исключение, если такого ключа нет в карте.
inline operator fun <V, V1 : V> Map<in String, V>.getValue(thisRef: Any?, property: KProperty<*>): V1
Возвращает значение свойства для заданного объекта из этой карты только для чтения.
Платформы и требования к версии: Common (1.0)
inline fun <K, V, R, M : MutableMap<in R, in V>> Map<out K, V>.mapKeysTo(destination: M, transform: (Map.Entry<K, V>) -> R): M
Заполняет указанную карту назначения элементами, ключи которых получены применением функции transform к каждому элементу этой Map, а значения взяты из этой карты.
Платформы и требования к версии: Common (1.0)
inline fun <K, V, R : Any, C : MutableCollection<in R>> Map<out K, V>.mapNotNullTo(destination: C, transform: (Map.Entry<K, V>) -> R?): C
Применяет заданную функцию transform к каждому элементу исходной карты и добавляет в указанное назначение только ненулевые результаты.
Платформы и требования к версии: Common (1.0)
inline fun <K, V, R, M : MutableMap<in K, in R>> Map<out K, V>.mapValuesTo(destination: M, transform: (Map.Entry<K, V>) -> R): M
Заполняет указанную карту назначения элементами с ключами из этой карты и значениями, полученными применением функции transform к каждому элементу этой Map.
Платформы и требования к версии: Common (1.7)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxBy(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>
Возвращает первый элемент, для которого функция selector возвращает наибольшее значение.
Платформы и требования к версии: JVM (1.0)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxBy(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>?
Платформы и требования к версии: Common (1.4)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxOf(selector: (Map.Entry<K, V>) -> R): R
inline fun <K, V> Map<out K, V>.maxOf(selector: (Map.Entry<K, V>) -> Double): Double
inline fun <K, V> Map<out K, V>.maxOf(selector: (Map.Entry<K, V>) -> Float): Float
Возвращает наибольшее значение среди всех значений, полученных функцией selector, применённой к каждому элементу карты.
Платформы и требования к версии: Common (1.4)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxOfOrNull(selector: (Map.Entry<K, V>) -> R): R?
inline fun <K, V> Map<out K, V>.maxOfOrNull(selector: (Map.Entry<K, V>) -> Double): Double?
inline fun <K, V> Map<out K, V>.maxOfOrNull(selector: (Map.Entry<K, V>) -> Float): Float?
Возвращает наибольшее значение среди всех значений, полученных функцией selector, применённой к каждому элементу карты, или null, если карта пуста.
Платформы и требования к версии: Common (1.4)
inline fun <K, V, R> Map<out K, V>.maxOfWith(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R
Возвращает наибольшее значение согласно заданному компаратору среди всех значений, полученных функцией selector, применённой к каждому элементу карты.
Платформы и требования к версии: Common (1.4)
inline fun <K, V, R> Map<out K, V>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R?
Возвращает наибольшее значение согласно заданному компаратору среди всех значений, полученных функцией selector, применённой к каждому элементу карты, или null, если карта пуста.
Требования к платформе и версии: Common (1.7)
inline fun <K, V> Map<out K, V>.maxWith(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>
Возвращает первую пару, имеющую наибольшее значение согласно указанному компаратору.
Требования к платформе и версии: JVM (1.0)
inline fun <K, V> Map<out K, V>.maxWith(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?
Требования к платформе и версии: Common (1.4)
inline fun <K, V> Map<out K, V>.maxWithOrNull(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?
Возвращает первую пару, имеющую наибольшее значение согласно указанному компаратору, или null, если пар нет.
Требования к платформе и версии: Common (1.7)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.minBy(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>
Возвращает первую пару, для которой функция выбора возвращает наименьшее значение.
Требования к платформе и версии: JVM (1.0)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.minBy(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>?
Требования к платформе и версии: Common (1.4)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.minOf(selector: (Map.Entry<K, V>) -> R): R
inline fun <K, V> Map<out K, V>.minOf(selector: (Map.Entry<K, V>) -> Double): Double
inline fun <K, V> Map<out K, V>.minOf(selector: (Map.Entry<K, V>) -> Float): Float
Возвращает наименьшее значение среди всех значений, полученных при применении функции выбора к каждой паре в карте.
Требования к платформе и версии: Common (1.4)
inline fun <K, V, R : Comparable<R>> Map<out K, V>.minOfOrNull(selector: (Map.Entry<K, V>) -> R): R?
inline fun <K, V> Map<out K, V>.minOfOrNull(selector: (Map.Entry<K, V>) -> Double): Double?
inline fun <K, V> Map<out K, V>.minOfOrNull(selector: (Map.Entry<K, V>) -> Float): Float?
Возвращает наименьшее значение среди всех значений, полученных при применении функции выбора к каждой паре в карте, или null, если карта пуста.
Требования к платформе и версии: Common (1.4)
inline fun <K, V, R> Map<out K, V>.minOfWith(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R
Возвращает наименьшее значение согласно указанному компаратору среди всех значений, полученных при применении функции выбора к каждой паре в карте.
Требования к платформе и версии: Common (1.4)
inline fun <K, V, R> Map<out K, V>.minOfWithOrNull(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R?
Возвращает наименьшее значение согласно указанному компаратору среди всех значений, полученных при применении функции выбора к каждой паре в карте, или null, если карта пуста.
Требования к платформе и версии: Common (1.1)
operator fun <K, V> Map<out K, V>.minus(key: K): Map<K, V>
Возвращает карту, содержащую все пары исходной карты, кроме пары с указанным ключом.
operator fun <K, V> Map<out K, V>.minus(keys: Array<out K>): Map<K, V>
Возвращает карту, содержащую все пары исходной карты, кроме пар, ключи которых содержатся в указанном массиве ключей.
operator fun <K, V> Map<out K, V>.minus(keys: Iterable<K>): Map<K, V>
Возвращает карту, содержащую все пары исходной карты, кроме пар, ключи которых содержатся в указанной коллекции ключей.
operator fun <K, V> Map<out K, V>.minus(keys: Sequence<K>): Map<K, V>
Возвращает карту, содержащую все пары исходной карты, кроме пар, ключи которых содержатся в указанной последовательности ключей.
Требования к платформе и версии: Common (1.7)
inline fun <K, V> Map<out K, V>.minWith(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>
Возвращает первую пару, имеющую наименьшее значение согласно указанному компаратору.
Требования к платформе и версии: JVM (1.0)
fun <K, V> Map<out K, V>.minWith(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?
Требования к платформе и версии: Common (1.4)
inline fun <K, V> Map<out K, V>.minWithOrNull(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?
Возвращает первую пару, имеющую наименьшее значение согласно указанному компаратору, или null, если пар нет.
Требования к платформе и версии: Common (1.0)
operator fun <K, V> Map<out K, V>.plus(pairs: Array<out Pair<K, V>>): Map<K, V>
Создаёт новую карту только для чтения, заменяя или добавляя в эту карту пары ключ-значение из указанного массива пар.
operator fun <K, V> Map<out K, V>.plus(pair: Pair<K, V>): Map<K, V>
Создаёт новую карту только для чтения, заменяя или добавляя в эту карту пару ключ-значение из указанной пары.
operator fun <K, V> Map<out K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V>
Создаёт новую карту только для чтения, заменяя или добавляя в эту карту пары ключ-значение из указанной коллекции пар.
operator fun <K, V> Map<out K, V>.plus(map: Map<out K, V>): Map<K, V>
Создаёт новую карту только для чтения, заменяя или добавляя в эту карту пары из другой карты.
operator fun <K, V> Map<out K, V>.plus(pairs: Sequence<Pair<K, V>>): Map<K, V>
Создаёт новую карту только для чтения, заменяя или добавляя в эту карту пары ключ-значение из указанной последовательности пар.
Требования к платформе и версии: Common (1.1)
fun <K, V> Map<out K, V>.toMap(): Map<K, V>
Возвращает новую карту только для чтения, содержащую все пары ключ-значение исходной карты.
fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.toMap(destination: M): M
Заполняет изменяемую карту назначения парами ключ-значение из заданной карты и возвращает её.
Требования к платформе и версии: Common (1.1)
fun <K, V> Map<out K, V>.toMutableMap(): MutableMap<K, V>
Возвращает новую изменяемую карту, содержащую все пары ключ-значение исходной карты.
Требования к платформе и версии: JVM (1.0)
inline fun Map<String, String>.toProperties(): Properties
Преобразует эту Map в объект Properties.
Требования к платформе и версии: JVM (1.0)
fun <K : Comparable<K>, V> Map<out K, V>.toSortedMap(): SortedMap<K, V>
Преобразует эту Map в SortedMap. Полученная SortedMap определяет равенство и порядок ключей в соответствии с их естественным порядком сортировки.
fun <K, V> Map<out K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap<K, V>
Преобразует эту Map в SortedMap. Полученная SortedMap определяет равенство и порядок ключей в соответствии с порядком сортировки, заданным указанным компаратором.
© 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/-map/index.html