Spec-Zone.ru › Kotlin 2

HashMap

kotlin-stdlib/kotlin.collections/HashMap

Требования к платформе и версии: Common (1.0)

expect class HashMap<K, V> : MutableMap<K, V> 

Реализация MutableMap на основе хеш-таблицы.

Этот класс хранит пары ключ-значение с помощью структуры данных «хеш-таблица», обеспечивающей быстрый поиск по ключам. Он полностью реализует контракт MutableMap, предоставляя все стандартные операции с отображением, включая добавление, удаление и поиск значений по ключу.

Ключи и значения null

HashMap принимает null в качестве ключа. Поскольку ключи уникальны, в отображении может существовать не более одной записи с ключом null. HashMap также принимает null в качестве значения, и несколько записей могут иметь значения null.

Контракты хеш-кода и равенства ключей

HashMap использует функции Any.hashCode и Any.equals ключей для организации записей и поиска по ним. Ключи считаются равными, если функция Any.equals возвращает true, а равные ключи должны иметь одинаковое значение Any.hashCode. Нарушение этого контракта может привести к неправильному поведению.

Функции Any.hashCode и Any.equals должны быть согласованными и неизменными на протяжении всего времени существования объектов-ключей. Изменение объекта-ключа, влияющее на его хеш-код или равенство после его использования в качестве ключа в HashMap, может привести к тому, что запись станет недоступной.

Характеристики производительности

Приведённые ниже характеристики производительности предполагают, что функция Any.hashCode ключей равномерно распределяет их по хеш-таблице, сводя к минимуму коллизии. Неудачная хеш-функция, вызывающая множество коллизий, может снизить производительность.

HashMap обеспечивает эффективную реализацию распространённых операций:

  • Поиск (get, containsKey): время O(1)

  • Добавление и удаление (put, remove): время O(1)

  • Поиск значения (containsValue): время O(n), требует просмотра всех записей

  • Итерация (entries, keys, values): время O(n)

Порядок итерации

HashMap не гарантирует определённый порядок итерации по ключам, значениям или записям. Порядок итерации непредсказуем и может измениться при перехешировании отображения (когда записи добавляются или удаляются и внутренняя ёмкость корректируется). Не полагайтесь на какой-либо определённый порядок итерации.

Если необходим предсказуемый порядок итерации, рассмотрите возможность использования LinkedHashMap, которая сохраняет порядок добавления элементов.

Рекомендации по использованию

HashMap использует внутреннюю структуру данных с конечной ёмкостью — максимальным количеством записей, которое она может хранить до необходимости увеличения. По мере добавления записей отображение отслеживает коэффициент загрузки — отношение количества записей к текущей ёмкости. Когда это отношение превышает определённый порог, отображение автоматически увеличивает ёмкость и выполняет перехеширование — перестраивает внутреннюю структуру данных, чтобы перераспределить записи. Перехеширование — относительно затратная операция, временно снижающая производительность. При создании HashMap можно дополнительно указать начальную ёмкость и порог коэффициента загрузки. Обратите внимание, что эти параметры являются лишь рекомендациями для реализации и могут быть проигнорированы.

Для оптимизации производительности и использования памяти:

  • Если количество записей известно заранее, используйте конструктор с начальной ёмкостью, чтобы избежать многократного перехеширования при росте отображения.

  • Выбирайте подходящий коэффициент загрузки при создании отображения. Более низкий коэффициент загрузки уменьшает вероятность коллизий, но требует больше памяти, а более высокий экономит память, но может увеличить время поиска. Коэффициент загрузки по умолчанию обычно обеспечивает хороший баланс.

  • Убедитесь, что реализации Any.hashCode объектов-ключей обеспечивают хорошее распределение, чтобы свести к минимуму коллизии и сохранить высокую производительность.

  • При добавлении нескольких записей предпочитайте putAll нескольким отдельным вызовам put.

Потокобезопасность

HashMap не является потокобезопасной. Если несколько потоков одновременно обращаются к экземпляру и хотя бы один из них изменяет его, требуется внешняя синхронизация.

Параметры типа

K

тип ключей отображения. Тип ключа отображения инвариантен.

V

тип значений отображения. Тип значения изменяемого отображения инвариантен.

Требования к платформе и версии: JS (1.1)

actual open class HashMap<K, V> : AbstractMutableMap<K, V> , MutableMap<K, V> 

Реализация MutableMap на основе хеш-таблицы.

Этот класс хранит пары ключ-значение с помощью структуры данных «хеш-таблица», обеспечивающей быстрый поиск по ключам. Он полностью реализует контракт MutableMap, предоставляя все стандартные операции с отображением, включая добавление, удаление и поиск значений по ключу.

Ключи и значения null

HashMap принимает null в качестве ключа. Поскольку ключи уникальны, в отображении может существовать не более одной записи с ключом null. HashMap также принимает null в качестве значения, и несколько записей могут иметь значения null.

Контракты хеш-кода и равенства ключей

HashMap использует функции Any.hashCode и Any.equals ключей для организации записей и поиска по ним. Ключи считаются равными, если функция Any.equals возвращает true, а равные ключи должны иметь одинаковое значение Any.hashCode. Нарушение этого контракта может привести к неправильному поведению.

Функции Any.hashCode и Any.equals должны быть согласованными и неизменными на протяжении всего времени существования объектов-ключей. Изменение объекта-ключа, влияющее на его хеш-код или равенство после его использования в качестве ключа в HashMap, может привести к тому, что запись станет недоступной.

Характеристики производительности

Приведённые ниже характеристики производительности предполагают, что функция Any.hashCode ключей равномерно распределяет их по хеш-таблице, сводя к минимуму коллизии. Неудачная хеш-функция, вызывающая множество коллизий, может снизить производительность.

HashMap обеспечивает эффективную реализацию распространённых операций:

  • Поиск (get, containsKey): время O(1)

  • Добавление и удаление (put, remove): время O(1)

  • Поиск значения (containsValue): время O(n), требует просмотра всех записей

  • Итерация (entries, keys, values): время O(n)

Порядок итерации

HashMap не гарантирует определённый порядок итерации по ключам, значениям или записям. Порядок итерации непредсказуем и может измениться при перехешировании отображения (когда записи добавляются или удаляются и внутренняя ёмкость корректируется). Не полагайтесь на какой-либо определённый порядок итерации.

Если необходим предсказуемый порядок итерации, рассмотрите возможность использования LinkedHashMap, которая сохраняет порядок добавления элементов.

Рекомендации по использованию

HashMap использует внутреннюю структуру данных с конечной ёмкостью — максимальным количеством записей, которое она может хранить до необходимости увеличения. Когда отображение заполняется, оно автоматически увеличивает ёмкость и выполняет перехеширование — перестраивает внутреннюю структуру данных, чтобы перераспределить записи. Перехеширование — относительно затратная операция, временно снижающая производительность. При создании HashMap можно дополнительно указать начальную ёмкость, которая будет использоваться для определения размера внутренней структуры данных и потенциально поможет избежать перехеширования при росте отображения.

Для оптимизации производительности и использования памяти:

  • Если количество записей известно заранее, используйте конструктор с начальной ёмкостью, чтобы избежать многократного перехеширования при росте отображения.

  • Убедитесь, что реализации Any.hashCode объектов-ключей обеспечивают хорошее распределение, чтобы свести к минимуму коллизии и сохранить высокую производительность.

  • При добавлении нескольких записей предпочитайте putAll нескольким отдельным вызовам put.

Потокобезопасность

HashMap не является потокобезопасной. Если несколько потоков одновременно обращаются к экземпляру и хотя бы один из них изменяет его, требуется внешняя синхронизация.

Параметры типа

K

тип ключей отображения. Тип ключа отображения инвариантен.

V

тип значений отображения. Тип значения изменяемого отображения инвариантен.

Наследники

LinkedHashMap

Требования к платформе и версии: JVM (1.1)

actual typealias HashMap<K, V> = java.util.HashMap<K, V>

Реализация MutableMap на основе хеш-таблицы.

Этот класс хранит пары ключ-значение с помощью структуры данных «хеш-таблица», обеспечивающей быстрый поиск по ключам. Он полностью реализует контракт MutableMap, предоставляя все стандартные операции с отображением, включая добавление, удаление и поиск значений по ключу.

Ключи и значения null

HashMap принимает null в качестве ключа. Поскольку ключи уникальны, в отображении может существовать не более одной записи с ключом null. HashMap также принимает null в качестве значения, и несколько записей могут иметь значения null.

Контракты хеш-кода и равенства ключей

HashMap использует функции Any.hashCode и Any.equals ключей для организации записей и поиска по ним. Ключи считаются равными, если функция Any.equals возвращает true, а равные ключи должны иметь одинаковое значение Any.hashCode. Нарушение этого контракта может привести к неправильному поведению.

Функции Any.hashCode и Any.equals должны быть согласованными и неизменными на протяжении всего времени существования объектов-ключей. Изменение объекта-ключа, влияющее на его хеш-код или равенство после его использования в качестве ключа в HashMap, может привести к тому, что запись станет недоступной.

Характеристики производительности

Приведённые ниже характеристики производительности предполагают, что функция Any.hashCode ключей равномерно распределяет их по хеш-таблице, сводя к минимуму коллизии. Неудачная хеш-функция, вызывающая множество коллизий, может снизить производительность.

HashMap обеспечивает эффективную реализацию распространённых операций:

  • Поиск (get, containsKey): время O(1)

  • Добавление и удаление (put, remove): время O(1)

  • Поиск значения (containsValue): время O(n), требует просмотра всех записей

  • Итерация (entries, keys, values): время O(n)

Порядок итерации

HashMap не гарантирует определённый порядок итерации по ключам, значениям или записям. Порядок итерации непредсказуем и может измениться при перехешировании отображения (когда записи добавляются или удаляются и внутренняя ёмкость корректируется). Не полагайтесь на какой-либо определённый порядок итерации.

Если необходим предсказуемый порядок итерации, рассмотрите возможность использования LinkedHashMap, которая сохраняет порядок добавления элементов.

Рекомендации по использованию

HashMap использует внутреннюю структуру данных с конечной ёмкостью — максимальным количеством записей, которое она может хранить до необходимости увеличения. По мере добавления записей отображение отслеживает коэффициент загрузки — отношение количества записей к текущей ёмкости. Когда это отношение превышает определённый порог, отображение автоматически увеличивает ёмкость и выполняет перехеширование — перестраивает внутреннюю структуру данных, чтобы перераспределить записи. Перехеширование — относительно затратная операция, временно снижающая производительность. При создании HashMap можно дополнительно указать начальную ёмкость и порог коэффициента загрузки.

Для оптимизации производительности и использования памяти:

  • Если количество записей известно заранее, используйте конструктор с начальной ёмкостью, чтобы избежать многократного перехеширования при росте отображения.

  • Выбирайте подходящий коэффициент загрузки при создании отображения. Более низкий коэффициент загрузки уменьшает вероятность коллизий, но требует больше памяти, а более высокий экономит память, но может увеличить время поиска. Коэффициент загрузки по умолчанию обычно обеспечивает хороший баланс.

  • Убедитесь, что реализации Any.hashCode объектов-ключей обеспечивают хорошее распределение, чтобы свести к минимуму коллизии и сохранить высокую производительность.

  • При добавлении нескольких записей предпочитайте putAll нескольким отдельным вызовам put.

Потокобезопасность

HashMap не является потокобезопасной. Если несколько потоков одновременно обращаются к экземпляру и хотя бы один из них изменяет его, требуется внешняя синхронизация.

Параметры типа

K

тип ключей отображения. Тип ключа отображения инвариантен.

V

тип значений отображения. Тип значения изменяемого отображения инвариантен.

Требования к платформе и версии: Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

actual class HashMap<K, V> : MutableMap<K, V> 

Реализация MutableMap на основе хеш-таблицы.

Этот класс хранит пары ключ-значение с помощью структуры данных «хеш-таблица», обеспечивающей быстрый поиск по ключам. Он полностью реализует контракт MutableMap, предоставляя все стандартные операции с отображением, включая добавление, удаление и поиск значений по ключу.

Ключи и значения null

HashMap принимает null в качестве ключа. Поскольку ключи уникальны, в отображении может существовать не более одной записи с ключом null. HashMap также принимает null в качестве значения, и несколько записей могут иметь значения null.

Контракты хеш-кода и равенства ключей

HashMap использует функции Any.hashCode и Any.equals ключей для организации записей и поиска по ним. Ключи считаются равными, если функция Any.equals возвращает true, а равные ключи должны иметь одинаковое значение Any.hashCode. Нарушение этого контракта может привести к неправильному поведению.

Функции Any.hashCode и Any.equals должны быть согласованными и неизменными на протяжении всего времени существования объектов-ключей. Изменение объекта-ключа, влияющее на его хеш-код или равенство после его использования в качестве ключа в HashMap, может привести к тому, что запись станет недоступной.

Характеристики производительности

Приведённые ниже характеристики производительности предполагают, что функция Any.hashCode ключей равномерно распределяет их по хеш-таблице, сводя к минимуму коллизии. Неудачная хеш-функция, вызывающая множество коллизий, может снизить производительность.

HashMap обеспечивает эффективную реализацию распространённых операций:

  • Поиск (get, containsKey): время O(1)

  • Добавление и удаление (put, remove): время O(1)

  • Поиск значения (containsValue): время O(n), требует просмотра всех записей

  • Итерация (entries, keys, values): время O(n)

Порядок итерации

HashMap не гарантирует определённый порядок итерации по ключам, значениям или записям. Порядок итерации непредсказуем и может измениться при перехешировании отображения (когда записи добавляются или удаляются и внутренняя ёмкость корректируется). Не полагайтесь на какой-либо определённый порядок итерации.

Если необходим предсказуемый порядок итерации, рассмотрите возможность использования LinkedHashMap, которая сохраняет порядок добавления элементов.

Рекомендации по использованию

HashMap использует внутреннюю структуру данных с конечной ёмкостью — максимальным количеством записей, которое она может хранить до необходимости увеличения. Когда отображение заполняется, оно автоматически увеличивает ёмкость и выполняет перехеширование — перестраивает внутреннюю структуру данных, чтобы перераспределить записи. Перехеширование — относительно затратная операция, временно снижающая производительность. При создании HashMap можно дополнительно указать начальную ёмкость, которая будет использоваться для определения размера внутренней структуры данных и потенциально поможет избежать перехеширования при росте отображения.

Для оптимизации производительности и использования памяти:

  • Если количество записей известно заранее, используйте конструктор с начальной ёмкостью, чтобы избежать многократного перехеширования при росте отображения.

  • Убедитесь, что реализации Any.hashCode объектов-ключей обеспечивают хорошее распределение, чтобы свести к минимуму коллизии и сохранить высокую производительность.

  • При добавлении нескольких записей предпочитайте putAll нескольким отдельным вызовам put.

Потокобезопасность

HashMap не является потокобезопасной. Если несколько потоков одновременно обращаются к экземпляру и хотя бы один из них изменяет его, требуется внешняя синхронизация.

Параметры типа

K

тип ключей отображения. Тип ключа отображения инвариантен.

V

тип значений отображения. Тип значения изменяемого отображения инвариантен.

Конструкторы

HashMap

Требования к платформе и версии: Common, JS, Native, Wasm-JS, Wasm-WASI

expect constructor()

Создаёт новое пустое отображение HashMap.

expect constructor(initialCapacity: Int)

Создаёт новое пустое отображение HashMap с указанной начальной ёмкостью.

expect constructor(initialCapacity: Int, loadFactor: Float)

Создаёт новое пустое отображение HashMap с указанными начальной ёмкостью и коэффициентом загрузки.

expect constructor(original: Map<out K, V>)

Создаёт новое отображение HashMap, заполненное содержимым указанного исходного отображения original.

Свойства

entries

Требования к платформе и версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override val entries: MutableSet<MutableMap.MutableEntry<K, V>>

Возвращает MutableSet всех пар ключ-значение в этом отображении.

keys

Требования к платформе и версии: Common (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override val keys: MutableSet<K>

Возвращает MutableSet всех ключей этого отображения.

Требования к платформе и версии: JS (1.1)

actual open override val keys: MutableSet<K>

Возвращает доступный только для чтения Set всех ключей этого отображения.

size

Требования к платформе и версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override val size: Int

Возвращает количество пар ключ-значение в отображении.

values

Требования к платформе и версии: Common (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override val values: MutableCollection<V>

Возвращает MutableCollection всех значений этого отображения. Обратите внимание, что эта коллекция может содержать повторяющиеся значения.

Требования к платформе и версии: JS (1.1)

actual open override val values: MutableCollection<V>

Возвращает доступную только для чтения Collection всех значений этого отображения.

Функции

all

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.all(predicate: (Map.Entry<K, V>) -> Boolean): Boolean

Возвращает true, если все элементы соответствуют заданному предикату.

any

Платформа и требования к версии: 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, если хотя бы один элемент соответствует заданному предикату.

asIterable

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.asIterable(): Iterable<Map.Entry<K, V>>

Создает экземпляр Iterable, который оборачивает исходную карту и возвращает ее элементы при итерации.

asJsMapView

Платформа и требования к версии: JS (2.0)

@ExperimentalJsExport
@ExperimentalJsCollectionsApi
open fun asJsMapView(): JsMap<K, V>

Возвращает представление с методами JsMap, позволяющее использовать его в JavaScript как обычную Map. Структурные изменения базовой карты синхронизируются с представлением, и наоборот.

asJsReadonlyMapView

Платформа и требования к версии: JS (2.0)

@ExperimentalJsExport
@ExperimentalJsCollectionsApi
open fun asJsReadonlyMapView(): JsReadonlyMap<K, V>

Возвращает представление с методами JsReadonlyMap, позволяющее использовать его в JavaScript как обычную карту только для чтения. Структурные изменения базовой карты синхронизируются с представлением.

asSequence

Платформа и требования к версии: Common (1.0)

fun <K, V> Map<out K, V>.asSequence(): Sequence<Map.Entry<K, V>>

Создает экземпляр Sequence, который оборачивает исходную карту и возвращает ее элементы при итерации.

clear

Платформа и требования к версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override fun clear()

Удаляет все элементы из этой карты.

contains

Платформа и требования к версии: Common (1.0)

inline operator fun <K, V> Map<out K, V>.contains(key: K): Boolean

Проверяет, содержит ли карта заданный ключ.

containsKey

Платформа и требования к версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override fun containsKey(key: K): Boolean

Возвращает true, если карта содержит указанный ключ.

containsKey

Платформа и требования к версии: Common (1.0)

inline fun <K> Map<out K, *>.containsKey(key: K): Boolean

Возвращает true, если карта содержит указанный ключ.

containsValue

Платформа и требования к версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override fun containsValue(value: V): Boolean

Возвращает true, если карта сопоставляет одному или нескольким ключам указанное значение.

containsValue

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<K, V>.containsValue(value: V): Boolean

Возвращает true, если карта сопоставляет одному или нескольким ключам указанное значение.

count

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.count(): Int

Возвращает количество элементов в этой карте.

inline fun <K, V> Map<out K, V>.count(predicate: (Map.Entry<K, V>) -> Boolean): Int

Возвращает количество элементов, соответствующих заданному предикату.

equals

Платформа и требования к версии: JS (1.1)

open operator override fun equals(other: Any?): Boolean

Сравнивает эту карту с другим экземпляром на предмет упорядоченного структурного равенства.

Платформа и требования к версии: Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

open operator override fun equals(other: Any?): Boolean

Показывает, равен ли другой объект этому объекту.

filter

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.filter(predicate: (Map.Entry<K, V>) -> Boolean): Map<K, V>

Возвращает новую карту, содержащую все пары «ключ-значение», соответствующие заданному предикату.

filterKeys

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.filterKeys(predicate: (K) -> Boolean): Map<K, V>

Возвращает карту, содержащую все пары «ключ-значение» с ключами, соответствующими заданному предикату.

filterNot

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.filterNot(predicate: (Map.Entry<K, V>) -> Boolean): Map<K, V>

Возвращает новую карту, содержащую все пары «ключ-значение», не соответствующие заданному предикату.

filterNotTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
inline fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.filterNotTo(destination: M, predicate: (Map.Entry<K, V>) -> Boolean): M

Добавляет все элементы, не соответствующие заданному предикату, в указанное назначение.

filterTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
inline fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.filterTo(destination: M, predicate: (Map.Entry<K, V>) -> Boolean): M

Добавляет все элементы, соответствующие заданному предикату, в изменяемую карту, указанную в качестве параметра назначения.

filterValues

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.filterValues(predicate: (V) -> Boolean): Map<K, V>

Возвращает карту, содержащую все пары «ключ-значение» со значениями, соответствующими заданному предикату.

firstNotNullOf

Платформа и требования к версии: Common (1.5)

inline fun <K, V, R : Any> Map<out K, V>.firstNotNullOf(transform: (Map.Entry<K, V>) -> R?): R

Возвращает первое ненулевое значение, полученное при применении функции transform к элементам этой карты в порядке итерации, или выбрасывает NoSuchElementException, если ненулевое значение не получено.

firstNotNullOfOrNull

Платформа и требования к версии: Common (1.5)

inline fun <K, V, R : Any> Map<out K, V>.firstNotNullOfOrNull(transform: (Map.Entry<K, V>) -> R?): R?

Возвращает первое ненулевое значение, полученное при применении функции transform к элементам этой карты в порядке итерации, или null, если ненулевое значение не получено.

flatMap

Платформа и требования к версии: Common (1.0)

inline fun <K, V, R> Map<out K, V>.flatMap(transform: (Map.Entry<K, V>) -> Iterable<R>): List<R>

Возвращает единый список всех элементов, полученных в результате вызова функции transform для каждого элемента исходной карты.

@JvmName(name = "flatMapSequence")
inline fun <K, V, R> Map<out K, V>.flatMap(transform: (Map.Entry<K, V>) -> Sequence<R>): List<R>

Возвращает единый список всех элементов, полученных в результате вызова функции transform для каждого элемента исходной карты.

flatMapTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
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 для каждого элемента исходной карты, в указанное назначение.

@JvmName(name = "flatMapSequenceTo")
@IgnorableReturnValue
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 для каждого элемента исходной карты, в указанное назначение.

forEach

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.forEach(action: (Map.Entry<K, V>) -> Unit)

Выполняет заданное действие для каждого элемента.

get

Платформа и требования к версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open operator override fun get(key: K): V?

Возвращает значение, соответствующее заданному ключу, или null, если такого ключа нет в карте.

get

Платформа и требования к версии: Common (1.0)

inline operator fun <K, V> Map<out K, V>.get(key: K): V?

Возвращает значение, соответствующее заданному ключу, или null, если такого ключа нет в карте.

getOrDefault

Платформа и требования к версии: JVM (1.2)

inline fun <K, V> Map<out K, V>.getOrDefault(key: K, defaultValue: V): V

Возвращает значение, сопоставленное указанному ключу, или defaultValue, если в этой карте нет соответствия для ключа.

getOrElse

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<K, V>.getOrElse(key: K, defaultValue: () -> V): V

Возвращает значение для заданного ключа, если оно присутствует и не равно null. В противном случае возвращает результат функции defaultValue.

getOrElseIfMissing

Платформа и требования к версии: Common (2.4)

@ExperimentalStdlibApi
inline fun <K, V> Map<K, V>.getOrElseIfMissing(key: K, defaultValue: () -> V): V

Возвращает значение для заданного ключа, если оно присутствует. В противном случае возвращает результат функции defaultValue.

getOrElseIfNull

Платформа и требования к версии: Common (2.4)

@ExperimentalStdlibApi
inline fun <K, V> Map<K, V>.getOrElseIfNull(key: K, defaultValue: () -> V): V

Возвращает значение для заданного ключа, если оно присутствует и не равно null. В противном случае возвращает результат функции defaultValue.

getOrPut

Платформа и требования к версии: Common (1.0)

inline fun <K, V> MutableMap<K, V>.getOrPut(key: K, defaultValue: () -> V): V

Возвращает значение для заданного ключа, если оно присутствует и не равно null. В противном случае вызывает функцию defaultValue, помещает ее результат в карту под заданным ключом и возвращает результат вызова.

getOrPutIfMissing

Платформа и требования к версии: Common (2.4)

@ExperimentalStdlibApi
inline fun <K, V> MutableMap<K, V>.getOrPutIfMissing(key: K, crossinline defaultValue: () -> V): V

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

getOrPutIfNull

Платформа и требования к версии: Common (2.4)

@ExperimentalStdlibApi
inline fun <K, V> MutableMap<K, V>.getOrPutIfNull(key: K, crossinline defaultValue: () -> V): V

Возвращает значение для заданного ключа, если оно присутствует и не равно null. В противном случае вызывает функцию defaultValue, помещает ее результат в карту под заданным ключом и возвращает результат вызова.

getValue

Платформа и требования к версии: 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

Возвращает значение свойства для заданного объекта из этой карты только для чтения.

@JvmName(name = "getVar")
inline operator fun <V, V1 : V> MutableMap<in String, out V>.getValue(thisRef: Any?, property: KProperty<*>): V1

Возвращает значение свойства для заданного объекта из этой изменяемой карты.

hashCode

Платформа и требования к версии: JS (1.1)

open override fun hashCode(): Int

Возвращает хеш-код этой карты.

Платформа и требования к версии: Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

open override fun hashCode(): Int

Возвращает хеш-код объекта.

isEmpty

Платформа и требования к версии: Common (1.0), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override fun isEmpty(): Boolean

Возвращает true, если карта пуста (не содержит элементов), и false в противном случае.

Платформа и требования к версии: JS (1.1)

open override fun isEmpty(): Boolean

Возвращает true, если карта пуста (не содержит элементов), и false в противном случае.

isNotEmpty

Платформа и требования к версии: Common (1.0)

inline fun <K, V> Map<out K, V>.isNotEmpty(): Boolean

Возвращает true, если эта карта не пуста.

isNullOrEmpty

Платформа и требования к версии: Common (1.3)

inline fun <K, V> Map<out K, V>?.isNullOrEmpty(): Boolean

Возвращает true, если эта карта, допускающая значение null, равна null или пуста.

iterator

Платформа и требования к версии: Common (1.0)

inline operator fun <K, V> Map<out K, V>.iterator(): Iterator<Map.Entry<K, V>>

Возвращает Iterator для элементов Map.

@JvmName(name = "mutableIterator")
inline operator fun <K, V> MutableMap<K, V>.iterator(): MutableIterator<MutableMap.MutableEntry<K, V>>

Возвращает MutableIterator для изменяемых элементов MutableMap.

map

Платформа и требования к версии: Common (1.0)

inline fun <K, V, R> Map<out K, V>.map(transform: (Map.Entry<K, V>) -> R): List<R>

Возвращает список, содержащий результаты применения заданной функции transform к каждому элементу исходной карты.

mapKeys

Платформа и требования к версии: Common (1.0)

inline fun <K, V, R> Map<out K, V>.mapKeys(transform: (Map.Entry<K, V>) -> R): Map<R, V>

Возвращает новую Map с элементами, ключи которых получены применением функции transform к каждому элементу этой Map, а значения взяты из этой карты.

mapKeysTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
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, а значения взяты из этой карты.

mapNotNull

Платформа и требования к версии: Common (1.0)

inline fun <K, V, R : Any> Map<out K, V>.mapNotNull(transform: (Map.Entry<K, V>) -> R?): List<R>

Возвращает список, содержащий только ненулевые результаты применения заданной функции transform к каждому элементу исходной карты.

mapNotNullTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
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 к каждому элементу исходной карты и добавляет только ненулевые результаты в указанное назначение.

mapTo

Платформа и требования к версии: Common (1.0)

@IgnorableReturnValue
inline fun <K, V, R, C : MutableCollection<in R>> Map<out K, V>.mapTo(destination: C, transform: (Map.Entry<K, V>) -> R): C

Применяет заданную функцию transform к каждому элементу исходной карты и добавляет результаты в указанное назначение.

mapValues

Требования к платформе и версии: Common (1.0)

inline fun <K, V, R> Map<out K, V>.mapValues(transform: (Map.Entry<K, V>) -> R): Map<K, R>

Возвращает новую карту с записями, ключи которых совпадают с ключами этой карты, а значения получены применением функции преобразования к каждой записи этой Map.

mapValuesTo

Требования к платформе и версии: Common (1.0)

@IgnorableReturnValue
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

Заполняет указанную карту назначения записями, ключи которых совпадают с ключами этой карты, а значения получены применением функции преобразования к каждой записи этой Map.

maxBy

Требования к платформе и версии: Common (1.7)

@JvmName(name = "maxByOrThrow")
inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxBy(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>

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

Требования к платформе и версии: 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>?
maxByOrNull

Требования к платформе и версии: Common (1.4)

inline fun <K, V, R : Comparable<R>> Map<out K, V>.maxByOrNull(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>?

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

maxOf

Требования к платформе и версии: 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

Возвращает наибольшее значение среди всех значений, полученных функцией селектора, применённой к каждой записи карты.

maxOfOrNull

Требования к платформе и версии: 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?

Возвращает наибольшее значение среди всех значений, полученных функцией селектора, применённой к каждой записи карты, или null, если карта пуста.

maxOfWith

Требования к платформе и версии: Common (1.4)

inline fun <K, V, R> Map<out K, V>.maxOfWith(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R

Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектора, применённой к каждой записи карты.

maxOfWithOrNull

Требования к платформе и версии: Common (1.4)

inline fun <K, V, R> Map<out K, V>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R?

Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектора, применённой к каждой записи карты, или null, если карта пуста.

maxWith

Требования к платформе и версии: Common (1.7)

@JvmName(name = "maxWithOrThrow")
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>?
maxWithOrNull

Требования к платформе и версии: Common (1.4)

inline fun <K, V> Map<out K, V>.maxWithOrNull(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?

Возвращает первую запись, имеющую наибольшее значение согласно указанному компаратору, или null, если записей нет.

minBy

Требования к платформе и версии: Common (1.7)

@JvmName(name = "minByOrThrow")
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>?
minByOrNull

Требования к платформе и версии: Common (1.4)

inline fun <K, V, R : Comparable<R>> Map<out K, V>.minByOrNull(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>?

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

minOf

Требования к платформе и версии: 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

Возвращает наименьшее значение среди всех значений, полученных функцией селектора, применённой к каждой записи карты.

minOfOrNull

Требования к платформе и версии: 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, если карта пуста.

minOfWith

Требования к платформе и версии: Common (1.4)

inline fun <K, V, R> Map<out K, V>.minOfWith(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R

Возвращает наименьшее значение согласно указанному компаратору среди всех значений, полученных функцией селектора, применённой к каждой записи карты.

minOfWithOrNull

Требования к платформе и версии: 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, если карта пуста.

minus

Требования к платформе и версии: 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>

Возвращает карту, содержащую все записи исходной карты, кроме записей, ключи которых входят в указанную последовательность ключей.

minusAssign

Требования к платформе и версии: Common (1.1)

inline operator fun <K, V> MutableMap<K, V>.minusAssign(key: K)

Удаляет из этой изменяемой карты запись с указанным ключом.

inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Array<out K>)

Удаляет из этой изменяемой карты все записи, ключи которых входят в указанный массив ключей.

inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Iterable<K>)

Удаляет из этой изменяемой карты все записи, ключи которых входят в указанную коллекцию ключей.

inline operator fun <K, V> MutableMap<K, V>.minusAssign(keys: Sequence<K>)

Удаляет из этой изменяемой карты все записи, ключи которых входят в указанную последовательность ключей.

minWith

Требования к платформе и версии: Common (1.7)

@JvmName(name = "minWithOrThrow")
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>?
minWithOrNull

Требования к платформе и версии: Common (1.4)

inline fun <K, V> Map<out K, V>.minWithOrNull(comparator: Comparator<in Map.Entry<K, V>>): Map.Entry<K, V>?

Возвращает первую запись, имеющую наименьшее значение согласно указанному компаратору, или null, если записей нет.

none

Требования к платформе и версии: Common (1.0)

fun <K, V> Map<out K, V>.none(): Boolean

Возвращает true, если карта не содержит записей.

inline fun <K, V> Map<out K, V>.none(predicate: (Map.Entry<K, V>) -> Boolean): Boolean

Возвращает true, если ни одна запись не удовлетворяет заданному предикату.

orEmpty

Требования к платформе и версии: Common (1.0)

inline fun <K, V> Map<K, V>?.orEmpty(): Map<K, V>

Возвращает Map, если она не null, иначе возвращает пустую Map.

plus

Требования к платформе и версии: Common (1.0)

operator fun <K, V> Map<out K, V>.plus(pairs: Array<out Pair<K, V>>): Map<K, V>

Создаёт новую карту только для чтения, заменяя или добавляя в эту карту записи из заданного массива пар «ключ-значение» pairs.

operator fun <K, V> Map<out K, V>.plus(pair: Pair<K, V>): Map<K, V>

Создаёт новую карту только для чтения, заменяя или добавляя в эту карту запись из заданной пары «ключ-значение» pair.

operator fun <K, V> Map<out K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V>

Создаёт новую карту только для чтения, заменяя или добавляя в эту карту записи из заданной коллекции пар «ключ-значение» pairs.

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>

Создаёт новую карту только для чтения, заменяя или добавляя в эту карту записи из заданной последовательности пар «ключ-значение» pairs.

plusAssign

Требования к платформе и версии: Common (1.0)

inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Array<out Pair<K, V>>)

Добавляет в эту изменяемую карту все пары из указанного массива pairs или заменяет ими существующие.

inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pair: Pair<K, V>)

Добавляет указанную пару в эту изменяемую карту или заменяет ею существующую.

inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Iterable<Pair<K, V>>)

Добавляет в эту изменяемую карту все пары из указанной коллекции pairs или заменяет ими существующие.

inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(map: Map<K, V>)

Добавляет в эту изменяемую карту все записи из указанной карты или заменяет ими существующие.

inline operator fun <K, V> MutableMap<in K, in V>.plusAssign(pairs: Sequence<Pair<K, V>>)

Добавляет в эту изменяемую карту все пары из указанной последовательности pairs или заменяет ими существующие.

put

Требования к платформе и версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

@IgnorableReturnValue
expect open override fun put(key: K, value: V): V?

Связывает указанное значение с указанным ключом в карте.

putAll

Требования к платформе и версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

expect open override fun putAll(from: Map<out K, V>)

Обновляет эту карту парами ключ/значение из указанной карты источник.

putAll

Требования к платформе и версии: Common (1.0)

fun <K, V> MutableMap<in K, in V>.putAll(pairs: Array<out Pair<K, V>>)

Помещает все заданные пары в эту MutableMap, используя первый компонент пары как ключ, а второй — как значение.

fun <K, V> MutableMap<in K, in V>.putAll(pairs: Iterable<Pair<K, V>>)

Помещает все элементы заданной коллекции в эту MutableMap, используя первый компонент пары как ключ, а второй — как значение.

fun <K, V> MutableMap<in K, in V>.putAll(pairs: Sequence<Pair<K, V>>)

Помещает все элементы заданной последовательности в эту MutableMap, используя первый компонент пары как ключ, а второй — как значение.

remove

Требования к платформе и версии: Common (1.0), JS (1.1), Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

@IgnorableReturnValue
expect open override fun remove(key: K): V?

Удаляет указанный ключ и соответствующее ему значение из этой карты.

remove

Требования к платформе и версии: Common (1.0)

@IgnorableReturnValue
inline fun <K, V> MutableMap<out K, V>.remove(key: K): V?

Удаляет указанный ключ и соответствующее ему значение из этой карты.

Требования к платформе и версии: JVM (1.2)

@IgnorableReturnValue
inline fun <K, V> MutableMap<out K, out V>.remove(key: K, value: V): Boolean

Удаляет запись для указанного ключа, только если в данный момент ему соответствует указанное значение.

set

Требования к платформе и версии: Common (1.0)

inline operator fun <K, V> MutableMap<K, V>.set(key: K, value: V)

Позволяет использовать оператор индексирования для сохранения значений в изменяемой карте.

setValue

Требования к платформе и версии: Common (1.0)

inline operator fun <V> MutableMap<in String, in V>.setValue(thisRef: Any?, property: KProperty<*>, value: V)

Сохраняет значение свойства для указанного объекта в этой изменяемой карте.

toList

Требования к платформе и версии: Common (1.0)

fun <K, V> Map<out K, V>.toList(): List<Pair<K, V>>

Возвращает List, содержащий все пары «ключ-значение».

toMap

Требования к платформе и версии: Common (1.1)

fun <K, V> Map<out K, V>.toMap(): Map<K, V>

Возвращает новую карту только для чтения, содержащую все пары «ключ-значение» исходной карты.

@IgnorableReturnValue
fun <K, V, M : MutableMap<in K, in V>> Map<out K, V>.toMap(destination: M): M

Заполняет изменяемую карту назначения парами «ключ-значение» из заданной карты и возвращает её.

toMutableMap

Требования к платформе и версии: Common (1.1)

fun <K, V> Map<out K, V>.toMutableMap(): MutableMap<K, V>

Возвращает новую изменяемую карту, содержащую все пары «ключ-значение» исходной карты.

toProperties

Требования к платформе и версии: JVM (1.0)

inline fun Map<String, String>.toProperties(): Properties

Преобразует эту Map в объект Properties.

toSortedMap

Требования к платформе и версии: 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 определяет равенство и порядок ключей в соответствии с порядком сортировки, задаваемым указанным компаратором.

toString

Требования к платформе и версии: JS (1.1)

open override fun toString(): String

Возвращает строковое представление объекта.

Требования к платформе и версии: Native (1.3), Wasm-JS (1.8), Wasm-WASI (1.8)

open override fun toString(): String

Возвращает строковое представление объекта.

withDefault

Требования к платформе и версии: Common (1.0)

fun <K, V> Map<K, V>.withDefault(defaultValue: (key: K) -> V): Map<K, V>

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

@JvmName(name = "withDefaultMutable")
fun <K, V> MutableMap<K, V>.withDefault(defaultValue: (key: K) -> V): MutableMap<K, V>

Возвращает оболочку этой изменяемой карты с неявным значением по умолчанию, предоставляемым указанной функцией defaultValue.

© 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/-hash-map/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API