Интерфейс Map<K,​V>

Параметры типа:
K - тип ключей, поддерживаемых этой картой
V - тип сопоставленных значений
Все известные подинтерфейсы:
Bindings, ConcurrentMap<K,​V>, ConcurrentNavigableMap<K,​V>, NavigableMap<K,​V>, SortedMap<K,​V>
Все известные реализующие классы:
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, Headers, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, ScriptObjectMirror, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap
public interface Map<K,V>

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

Этот интерфейс заменяет класс Dictionary, который был полностью абстрактным классом, а не интерфейсом.

Интерфейс Map предоставляет три представления коллекций, которые позволяют просматривать содержимое карты как множество ключей, коллекцию значений или множество пар "ключ-значение". Порядок карты определяется порядком, в котором итераторы по представлениям коллекций карты возвращают свои элементы. Некоторые реализации карт, такие как класс TreeMap, предоставляют конкретные гарантии порядка; другие, такие как класс HashMap, этого не делают.

Примечание: необходимо соблюдать особую осторожность, если в качестве ключей карты используются изменяемые объекты. Поведение карты не определено, если значение объекта изменяется таким образом, что влияет на сравнения equals в то время, когда объект является ключом в карте. Особым случаем этого запрета является то, что карта не может содержать себя в качестве ключа. Хотя карта может содержать себя в качестве значения, рекомендуется крайняя осторожность: методы equals и hashCode для такой карты больше не определены корректно.

Все классы реализации карт общего назначения должны предоставлять два "стандартных" конструктора: конструктор без аргументов, создающий пустую карту, и конструктор с единственным аргументом типа Map, создающий новую карту с теми же парами "ключ-значение", что и у аргумента. По сути, последний конструктор позволяет пользователю копировать любую карту, создавая эквивалентную карту желаемого класса. Нет способа принудить к этому рекомендации (так как интерфейсы не могут содержать конструкторы), но все реализации карт общего назначения в JDK соответствуют этому.

"Деструктивные" методы, содержащиеся в этом интерфейсе, то есть методы, которые изменяют карту, на которой они работают, определяются таким образом, что выбрасывают исключение UnsupportedOperationException, если эта карта не поддерживает операцию. В таком случае эти методы могут, но не обязаны, сгенерировать исключение UnsupportedOperationException, если вызов не повлияет на карту. Например, вызов метода putAll(Map) на неизменяемой карте может, но не обязан, сгенерировать исключение, если карта, чьи отображения будут "наложены", пустая.

У некоторых реализаций карт есть ограничения на ключи и значения, которые они могут содержать. Например, некоторые реализации запрещают null-ключи и null-значения, а некоторые имеют ограничения на типы ключей. Попытка вставить недопустимый ключ или значение генерирует необработанное исключение, обычно NullPointerException или ClassCastException. Попытка запросить наличие недопустимого ключа или значения может сгенерировать исключение или просто вернуть false; некоторые реализации будут проявлять первое поведение, а некоторые - второе. Более общо, попытка операции с недопустимым ключом или значением, завершение которой не приведет к вставке недопустимого элемента в карту, может сгенерировать исключение или завершиться успешно, по выбору реализации. Такие исключения помечены как "необязательные" в спецификации этого интерфейса.

Многие методы в интерфейсах фреймворка коллекций определяются с использованием метода equals. Например, спецификация метода containsKey(Object key) гласит: "возвращает true тогда и только тогда, когда эта карта содержит отображение для ключа k такого, что (key==null ? k==null : key.equals(k))". Эта спецификация не должна толковаться как утверждение о том, что вызов Map.containsKey с не-null аргументом key вызовет key.equals(k) для любого ключа k. Реализации могут использовать оптимизации, в которых вызов equals избегается, например, сначала сравнивая коды хэширования двух ключей. (Спецификация Object.hashCode() гарантирует, что два объекта с разными кодами хэширования не могут быть равны.) Более обще, реализации различных интерфейсов фреймворка коллекций могут использовать указанное поведение методов Object базового уровня, где реализатор считает это уместным.

Некоторые операции с картами, выполняющие рекурсивное обход карты, могут завершиться исключением для ссылочных экземпляров, где карта прямо или косвенно содержит себя. Это включает методы clone(), equals(), hashCode() и toString(). Реализации могут по желанию обрабатывать сценарий самоссылок, однако большинство текущих реализаций этого не делают.

Неизменяемые карты

Статические фабричные методы Map.of, Map.ofEntries и Map.copyOf предоставляют удобный способ создания неизменяемых карт. Экземпляры Map , создаваемые этими методами, обладают следующими характеристиками:

  • Они являются неизменяемыми. Ключи и значения не могут быть добавлены, удалены или обновлены. Вызов любого метода-мутатора на карте всегда приведет к генерации исключения UnsupportedOperationException. Однако, если сами содержащиеся ключи или значения изменяемы, это может привести к несогласованному поведению карты или к тому, что её содержимое будет казаться изменяемым.
  • Они запрещают null ключи и значения. Попытки создать их с null ключами или значениями приводит к исключению NullPointerException.
  • Они сериализуемы, если все ключи и значения сериализуемы.
  • Они отклоняют дублирующие ключи во время создания. Дублирующие ключи, переданные в статический фабричный метод, приведут к исключению IllegalArgumentException.
  • Порядок итерации отображений не определён и может меняться.
  • Они являются значение-ориентированными. Вызывающие стороны не должны делать предположений об идентичности возвращенных экземпляров. Фабрики могут создавать новые экземпляры или повторно использовать существующие. Поэтому операции, чувствительные к идентичности (равенство ссылок (==), код хэширования по идентичности и синхронизация) на этих экземплярах ненадежны и должны быть избегаемы.
  • Они сериализуются, как указано на странице Формы сериализации.

Этот интерфейс является членом фреймворка Java Collections Framework.

С момента:
1.2
См. также:
HashMap, TreeMap, Hashtable, SortedMap, Collection, Set

Вложенные классы

Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,​V>

Элемент карты (пара "ключ-значение").

Методы

Модификатор и тип Метод Описание
void clear()

Удаляет все сопоставления из этой карты (необязательная операция).

default V compute​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction)

Попытка вычислить сопоставление для указанного ключа и его текущего сопоставленного значения (или null если текущего сопоставления нет).

default V computeIfAbsent​(K key, Function<? super K,​? extends V> mappingFunction)

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

default V computeIfPresent​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction)

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

boolean containsKey​(Object key)

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

boolean containsValue​(Object value)

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

static <K,​V>
Map<K,​V>
copyOf​(Map<? extends K,​? extends V> map)

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

static <K,​V>
Map.Entry<K,​V>
entry​(K k, V v)

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

Set<Map.Entry<K,​V>> entrySet()

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

boolean equals​(Object o)

Сравнивает указанный объект с этой картой на равенство.

default void forEach​(BiConsumer<? super K,​? super V> action)

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

V get​(Object key)

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

default V getOrDefault​(Object key, V defaultValue)

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

int hashCode()

Возвращает значение хэш-кода для этой карты.

boolean isEmpty()

Возвращает true если в этой карте нет сопоставлений ключ-значение.

Set<K> keySet()

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

default V merge​(K key, V value, BiFunction<? super V,​? super V,​? extends V> remappingFunction)

Если указанный ключ еще не связан со значением или связан с null, связывает его со значением и возвращает null, иначе возвращает текущее значение.

static <K,​V>
Map<K,​V>
of()

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9)

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

static <K,​V>
Map<K,​V>
of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10)

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

static <K,​V>
Map<K,​V>
ofEntries​(Map.Entry<? extends K,​? extends V>... entries)

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

V put​(K key, V value)

Связывает указанное значение с указанным ключом в этой карте (необязательная операция).

void putAll​(Map<? extends K,​? extends V> m)

Копирует все сопоставления из указанной карты в эту карту (необязательная операция).

default V putIfAbsent​(K key, V value)

Если указанный ключ еще не связан со значением (или сопоставлен с null) связывает его с заданным значением и возвращает null, иначе возвращает текущее значение.

V remove​(Object key)

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

default boolean remove​(Object key, Object value)

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

default V replace​(K key, V value)

Заменяет запись для указанного ключа только в том случае, если она в настоящее время сопоставлена ​​с каким-либо значением.

default boolean replace​(K key, V oldValue, V newValue)

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

default void replaceAll​(BiFunction<? super K,​? super V,​? extends V> function)

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

int size()

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

Collection<V> values()

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

Методы

size

int size()

Возвращает количество пар ключ-значение в этой карте. Если карта содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.

Возвращает:
количество пар ключ-значение в этой карте

isEmpty

boolean isEmpty()

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

Возвращает:
true если эта карта не содержит пар ключ-значение

containsKey

boolean containsKey(Object key)

Возвращает true , если эта карта содержит отображение для указанного ключа. Более формально, возвращает true тогда и только тогда, когда эта карта содержит отображение для ключа k такого, что Objects.equals(key, k). (Может быть не более одного такого отображения.)

Параметры:
key - ключ, присутствие которого в этой карте нужно проверить
Возвращает:
true если эта карта содержит отображение для указанного ключа
Исключение:
ClassCastException - если ключ неподходящего типа для этой карты (необязательно)
NullPointerException - если указанный ключ равен null, и эта карта не допускает null-ключи (необязательно)

containsValue

boolean containsValue(Object value)

Возвращает true , если эта карта отображает один или несколько ключей на указанное значение. Более формально, возвращает true тогда и только тогда, когда эта карта содержит по крайней мере одно отображение на значение v такое, что Objects.equals(value, v). Для большинства реализаций интерфейса Map эта операция, вероятно, потребует времени, линейного по размеру карты.

Параметры:
value - значение, присутствие которого в этой карте нужно проверить
Возвращает:
true если эта карта отображает один или несколько ключей на указанное значение
Исключение:
ClassCastException - если значение неподходящего типа для этой карты (необязательно)
NullPointerException - если указанное значение равно null, и эта карта не допускает null-значений (необязательно)

get

V get(Object key)

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

Более формально, если эта карта содержит отображение от ключа k к значению v такое, что Objects.equals(key, k), то этот метод возвращает v; в противном случае он возвращает null. (Может быть не более одного такого отображения.)

Если эта карта допускает null-значения, то возвращаемое значение null не обязательно указывает на отсутствие отображения для ключа; также возможно, что карта явно сопоставляет ключ со значением null. Операция containsKey может использоваться для различения этих двух случаев.

Параметры:
key - ключ, связанное значение которого нужно вернуть
Возвращает:
значение, которому сопоставлен указанный ключ, или null , если эта карта не содержит отображения для ключа
Исключение:
ClassCastException - если ключ неподходящего типа для этой карты (необязательно)
NullPointerException - если указанный ключ равен null, и эта карта не допускает null-ключи (необязательно)

put

V put(K key,
      V value)

Сопоставляет указанное значение с указанным ключом в этой карте (необязательная операция). Если карта ранее содержала отображение для ключа, старое значение заменяется указанным значением. (Карта m считается содержащей отображение для ключа k тогда и только тогда, когда m.containsKey(k) вернет true.)

Параметры:
key - ключ, с которым нужно сопоставить указанное значение
value - значение, которое нужно сопоставить с указанным ключом
Возвращает:
предыдущее значение, связанное с key, или null , если для key не было отображения. (Возврат null также может указывать на то, что карта ранее сопоставила null со значением key, если реализация поддерживает значения null.)
Исключение:
UnsupportedOperationException - если операция put не поддерживается этой картой
ClassCastException - если класс указанного ключа или значения не позволяет его хранить в этой карте
NullPointerException - если указанный ключ или значение равно null, и эта карта не допускает null-ключи или null-значения
IllegalArgumentException - если какое-либо свойство указанного ключа или значения не позволяет его хранить в этой карте

remove

V remove(Object key)

Удаляет отображение для ключа из этой карты, если оно присутствует (необязательная операция). Более формально, если эта карта содержит отображение от ключа k к значению v такое, что Objects.equals(key, k), это отображение удаляется. (В карте может быть не более одного такого отображения.)

Возвращает значение, которое эта карта ранее ассоциировала с ключом, или null , если в карте не было отображения для ключа.

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

Карта не будет содержать отображения для указанного ключа после возврата вызова.

Параметры:
key - ключ, отображение которого нужно удалить из карты
Возвращает:
предыдущее значение, связанное с key, или null , если для key не было отображения.
Исключение:
UnsupportedOperationException - если операция remove не поддерживается этой картой
ClassCastException - если ключ неподходящего типа для этой карты (необязательно)
NullPointerException - если указанный ключ равен null, и эта карта не допускает null-ключи (необязательно)

putAll

void putAll(Map<? extends K,​? extends V> m)

Копирует все отображения из указанной карты в эту карту (необязательная операция). Эффект этого вызова эквивалентен вызову put(k, v) для этой карты один раз для каждого отображения от ключа k к значению v в указанной карте. Поведение этой операции не определено, если указанная карта изменяется во время выполнения операции.

Параметры:
m - отображения, которые нужно сохранить в этой карте
Исключение:
UnsupportedOperationException - если операция putAll не поддерживается этой картой
ClassCastException - если класс ключа или значения в указанной карте не позволяет его хранить в этой карте
NullPointerException - если указанная карта равна null, или если эта карта не допускает null-ключи или null-значения, и указанная карта содержит null-ключи или null-значения
IllegalArgumentException - если какое-либо свойство ключа или значения в указанной карте не позволяет его хранить в этой карте

clear

void clear()

Удаляет все отображения из этой карты (необязательная операция). Карта будет пустой после возврата этого вызова.

Исключение:
UnsupportedOperationException - если операция clear не поддерживается этой картой

keySet

Set<K> keySet()

Возвращает представление Set ключей, содержащихся в этой карте. Множество подкрепляется картой, поэтому изменения в карте отражаются в множестве и наоборот. Если карта изменяется во время итерации по множеству (кроме как через собственную операцию итератора remove ), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, через операции Iterator.remove, Set.remove, removeAll, retainAll, и clear . Оно не поддерживает операции add или addAll.

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

values

Collection<V> values()

Возвращает представление Collection значений, содержащихся в этой карте. Коллекция подкрепляется картой, поэтому изменения в карте отражаются в коллекции и наоборот. Если карта изменяется во время итерации по коллекции (кроме как через собственную операцию итератора remove ), результаты итерации не определены. Коллекция поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, через операции Iterator.remove, Collection.remove, removeAll, retainAll и clear . Она не поддерживает операции add или addAll.

Возвращает:
представление коллекции значений, содержащихся в этой карте

entrySet

Set<Map.Entry<K,V>> entrySet()

Возвращает представление Set отображений, содержащихся в этой карте. Множество подкрепляется картой, поэтому изменения в карте отражаются в множестве и наоборот. Если карта изменяется во время итерации по множеству (кроме как через собственную операцию итератора remove или через операцию setValue на записи карты, возвращенной итератором), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты, через операции Iterator.remove, Set.remove, removeAll, retainAll и clear . Оно не поддерживает операции add или addAll.

Возвращает:
представление множества отображений, содержащихся в этой карте

equals

boolean equals(Object o)

Сравнивает указанный объект с этой картой на предмет равенства. Возвращает true если данный объект также является картой и две карты представляют одни и те же отображения. Более формально, две карты m1 и m2 представляют одни и те же отображения, если m1.entrySet().equals(m2.entrySet()). Это гарантирует, что метод equals работает правильно в разных реализациях интерфейса Map.

Overrides:
equals в классе Object
Parameters:
o - объект, который сравнивается на равенство с этой картой
Returns:
true если указанный объект равен этой карте
See Also:
Object.hashCode(), HashMap

hashCode

int hashCode()

Возвращает значение хэш-кода для этой карты. Хэш-код карты определяется как сумма хэш-кодов каждой записи в представлении entrySet() карты. Это гарантирует, что m1.equals(m2) подразумевает m1.hashCode()==m2.hashCode() для любых двух карт m1 и m2, как требуется общим соглашением Object.hashCode().

Overrides:
hashCode в классе Object
Returns:
значение хэш-кода для этой карты
See Also:
Map.Entry.hashCode(), Object.equals(Object), equals(Object)

getOrDefault

default V getOrDefault(Object key,
                       V defaultValue)

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

Implementation Requirements:
Базовая реализация не дает гарантий о свойствах синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и документировать свои свойства конкурентности.
Parameters:
key - ключ, связанное значение которого необходимо вернуть
defaultValue - значение по умолчанию для ключа
Returns:
значение, которому сопоставлен указанный ключ, или defaultValue если эта карта не содержит сопоставления для ключа
Throws:
ClassCastException - если ключ имеет неподходящий тип для этой карты (необязательно)
NullPointerException - если указанный ключ null и эта карта не допускает null-ключей (необязательно)
Since:
1.8

forEach

default void forEach(BiConsumer<? super K,​? super V> action)

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

Implementation Requirements:
Базовая реализация эквивалентна для этой map:
for (Map.Entry<K, V> entry : map.entrySet())
     action.accept(entry.getKey(), entry.getValue());
. Базовая реализация не дает гарантий о свойствах синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и документировать свои свойства конкурентности.
Parameters:
action - действие, которое должно выполняться для каждой записи
Throws:
NullPointerException - если указанное действие null
ConcurrentModificationException - если обнаружена запись, удаленная во время итерации
Since:
1.8

replaceAll

default void replaceAll(BiFunction<? super K,​? super V,​? extends V> function)

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

Implementation Requirements:

Базовая реализация эквивалентна для этой map:

for (Map.Entry<K, V> entry : map.entrySet())
     entry.setValue(function.apply(entry.getKey(), entry.getValue()));

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

Parameters:
function - функция, применяемая к каждой записи
Throws:
UnsupportedOperationException - если операция set не поддерживается итератором набора записей этой карты.
ClassCastException - если класс заменяемого значения препятствует его хранению в этой карте
NullPointerException - если указанная функция или заменяемое значение null, а эта карта не допускает null-значений
ClassCastException - если заменяемое значение имеет неподходящий тип для этой карты (необязательно)
NullPointerException - если функция или заменяемое значение null, а эта карта не допускает null-ключей или null-значений (необязательно)
IllegalArgumentException - если некоторые свойства заменяемого значения препятствуют его хранению в этой карте (необязательно)
ConcurrentModificationException - если обнаружена запись, удаленная во время итерации
Since:
1.8

putIfAbsent

default V putIfAbsent(K key,
                      V value)

Если указанный ключ еще не связан со значением (или сопоставлен с null) связывает его с заданным значением и возвращает null, в противном случае возвращает текущее значение.

Implementation Requirements:
Базовая реализация эквивалентна для этой map:
V v = map.get(key);
 if (v == null)
     v = map.put(key, value);

 return v;
. Базовая реализация не дает гарантий о свойствах синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и документировать свои свойства конкурентности.
Parameters:
key - ключ, с которым нужно связать указанное значение
value - значение, которое нужно связать с указанным ключом
Returns:
предыдущее значение, связанное с указанным ключом, или null если для ключа не было сопоставления. (Возвращаемое значение null также может указывать, что карта ранее связывала null с ключом, если реализация поддерживает null-значения.)
Throws:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если ключ или значение имеют неподходящий тип для этой карты (необязательно)
NullPointerException - если указанный ключ или значение null, а эта карта не допускает null-ключей или null-значений (необязательно)
IllegalArgumentException - если некоторые свойства указанного ключа или значения препятствуют его хранению в этой карте (необязательно)
Since:
1.8

remove

default boolean remove(Object key,
                       Object value)

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

Implementation Requirements:
Базовая реализация эквивалентна для этой map:
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
     map.remove(key);
     return true;
 } else
     return false;
. Базовая реализация не дает гарантий о свойствах синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и документировать свои свойства конкурентности.
Parameters:
key - ключ, связанный с указанным значением
value - ожидаемое значение, связанное с указанным ключом
Returns:
true если значение было удалено
Throws:
UnsupportedOperationException - если операция remove не поддерживается этой картой (необязательно)
ClassCastException - если ключ или значение имеют неподходящий тип для этой карты (необязательно)
NullPointerException - если указанный ключ или значение null, а эта карта не допускает null-ключей или null-значений (необязательно)
Since:
1.8

replace

default boolean replace(K key,
                        V oldValue,
                        V newValue)

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

Implementation Requirements:
Базовая реализация эквивалентна для этой map:
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
     map.put(key, newValue);
     return true;
 } else
     return false;
. Базовая реализация не выбрасывает NullPointerException для карт, которые не поддерживают null-значения, если oldValue null, пока newValue тоже не null.

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

Parameters:
key - ключ, связанный с указанным значением
oldValue - ожидаемое значение, связанное с указанным ключом
newValue - значение, которое должно быть связано с указанным ключом
Returns:
true если значение было заменено
Throws:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте
NullPointerException - если указанный ключ или newValue null, а эта карта не допускает null-ключей или null-значений
NullPointerException - если oldValue null и эта карта не допускает null-значений (необязательно)
IllegalArgumentException - если некоторые свойства указанного ключа или значения препятствуют его хранению в этой карте
Since:
1.8

replace

default V replace(K key,
                  V value)

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

Требования к реализации:
По умолчанию реализация эквивалентна для этого map:
if (map.containsKey(key)) {
     return map.put(key, value);
 } else
     return null;

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

Параметры:
key - ключ, с которым ассоциировано указанное значение
value - значение, которое должно быть ассоциировано с указанным ключом
Возвращаемое значение:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не было сопоставления. (Возвращение null также может указывать на то, что карта ранее ассоциировала null с ключом, если реализация поддерживает нулевые значения.)
Исключения:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения не позволяет его хранение в этой карте (необязательно)
NullPointerException - если указанный ключ или значение равно null, и эта карта не допускает null-ключей или null-значений
IllegalArgumentException - если какое-либо свойство указанного ключа или значения не позволяет его хранение в этой карте
С тех пор:
1.8

computeIfAbsent

default V computeIfAbsent(K key,
                          Function<? super K,​? extends V> mappingFunction)

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

Если функция сопоставления возвращает null, сопоставление не записывается. Если сама функция сопоставления вызывает исключение (непроверенного типа), исключение перебрасывается, и сопоставление не записывается. Наиболее распространённое использование заключается в построении нового объекта, служащего начальным сопоставленным значением или кэшированным результатом, как в примере:

map.computeIfAbsent(key, k -> new Value(f(k)));

Или для реализации карты с множественными значениями, Map<K,Collection<V>>, поддерживающей несколько значений на один ключ:

map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);

Функция сопоставления не должна изменять эту карту во время вычисления.

Требования к реализации:
По умолчанию реализация эквивалентна следующим шагам для этого map, а затем возвращает текущее значение или null в случае отсутствия:
if (map.get(key) == null) {
     V newValue = mappingFunction.apply(key);
     if (newValue != null)
         map.put(key, newValue);
 }

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

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

Параметры:
key - ключ, с которым должно быть связано указанное значение
mappingFunction - функция сопоставления для вычисления значения
Возвращаемое значение:
текущее (существующее или вычисленное) значение, связанное с указанным ключом, или null, если вычисленное значение равно null
Исключения:
NullPointerException - если указанный ключ равен null, и эта карта не поддерживает null-ключи, или mappingFunction равен null
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения не позволяет его хранение в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения не позволяет его хранение в этой карте
С тех пор:
1.8

computeIfPresent

default V computeIfPresent(K key,
                           BiFunction<? super K,​? super V,​? extends V> remappingFunction)

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

Если функция переназначения возвращает null, сопоставление удаляется. Если сама функция переназначения вызывает исключение (непроверенного типа), исключение перебрасывается, и текущее сопоставление остается неизменным.

Функция переназначения не должна изменять эту карту во время вычисления.

Требования к реализации:
По умолчанию реализация эквивалентна выполнению следующих шагов для этого map, а затем возвращает текущее значение или null в случае отсутствия:
if (map.get(key) != null) {
     V oldValue = map.get(key);
     V newValue = remappingFunction.apply(key, oldValue);
     if (newValue != null)
         map.put(key, newValue);
     else
         map.remove(key);
 }

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

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

Параметры:
key - ключ, с которым должно быть связано указанное значение
remappingFunction - функция переназначения для вычисления значения
Возвращаемое значение:
новое значение, связанное с указанным ключом, или null, если нет
Исключения:
NullPointerException - если указанный ключ равен null, и эта карта не поддерживает null-ключи, или remappingFunction равен null
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения не позволяет его хранение в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения не позволяет его хранение в этой карте
С тех пор:
1.8

compute

default V compute(K key,
                  BiFunction<? super K,​? super V,​? extends V> remappingFunction)

Пытается вычислить сопоставление для указанного ключа и его текущего сопоставленного значения (или null если текущего сопоставления нет). Например, для создания или добавления String сообщения к значению сопоставления:

map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(Метод merge() часто проще использовать для таких целей.)

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

Функция переназначения не должна изменять эту карту во время вычисления.

Требования к реализации:
По умолчанию реализация эквивалентна выполнению следующих шагов для этого map, а затем возвращает текущее значение или null в случае отсутствия:
V oldValue = map.get(key);
 V newValue = remappingFunction.apply(key, oldValue);
 if (oldValue != null) {
    if (newValue != null)
       map.put(key, newValue);
    else
       map.remove(key);
 } else {
    if (newValue != null)
       map.put(key, newValue);
    else
       return null;
 }

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

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

Параметры:
key - ключ, с которым должно быть связано указанное значение
remappingFunction - функция переназначения для вычисления значения
Возвращаемое значение:
новое значение, связанное с указанным ключом, или null, если нет
Исключения:
NullPointerException - если указанный ключ равен null, и эта карта не поддерживает null-ключи, или remappingFunction равен null
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения не позволяет его хранение в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения не позволяет его хранение в этой карте
С тех пор:
1.8

merge

default V merge(K key,
                V value,
                BiFunction<? super V,​? super V,​? extends V> remappingFunction)

Если указанный ключ еще не связан со значением или связан с нулём, он связывается с заданным ненулевым значением. В противном случае, связанное значение заменяется результатом применения заданной функции переназначения, или удаляется, если результат равен null. Этот метод может быть полезен при объединении нескольких сопоставленных значений для одного ключа. Например, для создания или добавления String msg к сопоставлению значений:

map.merge(key, msg, String::concat)

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

Функция переназначения не должна изменять эту карту во время вычисления.

Требования к реализации:
Базовая реализация эквивалентна выполнению следующих шагов для этой map, затем возвращению текущего значения или null при его отсутствии:
V oldValue = map.get(key);
 V newValue = (oldValue == null) ? value :
              remappingFunction.apply(oldValue, value);
 if (newValue == null)
     map.remove(key);
 else
     map.put(key, newValue);

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

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

Параметры:
key - ключ, с которым будет связано результирующее значение
value - ненулевое значение, которое будет объединено с существующим значением, связанным с ключом, или, если нет существующего значения или значение равно null, которое будет связано с ключом
remappingFunction - функция переназначения для повторного вычисления значения, если оно присутствует
Возвращает:
новое значение, связанное с указанным ключом, или null, если значение не связано с ключом
Исключения:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения препятствует его хранению в этой карте (необязательно)
NullPointerException - если указанный ключ равен null и эта карта не поддерживает null-ключи, или значение или remappingFunction равно null
С:
1.8

of

static <K,V> Map<K,​V> of()

Возвращает неизменяемую карту, содержащую нулевые сопоставления. Подробности см. в разделе Неизменяемые карты.

Параметры типа:
K - тип ключа Map
V - тип значения Map
Возвращает:
пустая Map
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1)

Возвращает неизменяемую карту, содержащую одно сопоставление. Подробности см. в разделе Неизменяемые карты.

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ сопоставления
v1 - значение сопоставления
Возвращает:
карту Map с указанным сопоставлением
Исключения:
NullPointerException - если ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2)

Возвращает неизменяемую карту, содержащую два сопоставления. Подробности см. в разделе Неизменяемые карты.

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
Возвращает:
карту Map с указанными сопоставлениями
Исключения:
IllegalArgumentException - если ключи дублируются
NullPointerException - если какой-либо ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3)

Возвращает неизменяемую карту, содержащую три сопоставления. Подробности см. в разделе Неизменяемые карты.

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
Возвращает:
карту Map с указанными сопоставлениями
Исключения:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если какой-либо ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
Возвращает:
карту Map с указанными сопоставлениями
Исключения:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если какой-либо ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
Возвращает:
карту Map с указанными сопоставлениями
Исключения:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если какой-либо ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5,
                                     K k6,
                                     V v6)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
Возвращает:
карту Map с указанными сопоставлениями
Исключения:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если какой-либо ключ или значение null
С:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5,
                                     K k6,
                                     V v6,
                                     K k7,
                                     V v7)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
k3 - ключ третьего отображения
v3 - значение третьего отображения
k4 - ключ четвертого отображения
v4 - значение четвертого отображения
k5 - ключ пятого отображения
v5 - значение пятого отображения
k6 - ключ шестого отображения
v6 - значение шестого отображения
k7 - ключ седьмого отображения
v7 - значение седьмого отображения
Возвращает:
a Map, содержащий указанные отображения
Выбрасывает:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой ключ или значение null
С тех пор как:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5,
                                     K k6,
                                     V v6,
                                     K k7,
                                     V v7,
                                     K k8,
                                     V v8)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
k3 - ключ третьего отображения
v3 - значение третьего отображения
k4 - ключ четвертого отображения
v4 - значение четвертого отображения
k5 - ключ пятого отображения
v5 - значение пятого отображения
k6 - ключ шестого отображения
v6 - значение шестого отображения
k7 - ключ седьмого отображения
v7 - значение седьмого отображения
k8 - ключ восьмого отображения
v8 - значение восьмого отображения
Возвращает:
a Map содержащий указанные отображения
Выбрасывает:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой ключ или значение null
С тех пор как:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5,
                                     K k6,
                                     V v6,
                                     K k7,
                                     V v7,
                                     K k8,
                                     V v8,
                                     K k9,
                                     V v9)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
k3 - ключ третьего отображения
v3 - значение третьего отображения
k4 - ключ четвертого отображения
v4 - значение четвертого отображения
k5 - ключ пятого отображения
v5 - значение пятого отображения
k6 - ключ шестого отображения
v6 - значение шестого отображения
k7 - ключ седьмого отображения
v7 - значение седьмого отображения
k8 - ключ восьмого отображения
v8 - значение восьмого отображения
k9 - ключ девятого отображения
v9 - значение девятого отображения
Возвращает:
a Map содержащий указанные отображения
Выбрасывает:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой ключ или значение null
С тех пор как:
9

of

static <K,V> Map<K,​V> of​(K k1,
                                     V v1,
                                     K k2,
                                     V v2,
                                     K k3,
                                     V v3,
                                     K k4,
                                     V v4,
                                     K k5,
                                     V v5,
                                     K k6,
                                     V v6,
                                     K k7,
                                     V v7,
                                     K k8,
                                     V v8,
                                     K k9,
                                     V v9,
                                     K k10,
                                     V v10)

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

Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
k3 - ключ третьего отображения
v3 - значение третьего отображения
k4 - ключ четвертого отображения
v4 - значение четвертого отображения
k5 - ключ пятого отображения
v5 - значение пятого отображения
k6 - ключ шестого отображения
v6 - значение шестого отображения
k7 - ключ седьмого отображения
v7 - значение седьмого отображения
k8 - ключ восьмого отображения
v8 - значение восьмого отображения
k9 - ключ девятого отображения
v9 - значение девятого отображения
k10 - ключ десятого отображения
v10 - значение десятого отображения
Возвращает:
a Map содержащий указанные отображения
Выбрасывает:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой ключ или значение null
С тех пор как:
9

ofEntries

@SafeVarargs
static <K,V> Map<K,​V> ofEntries​(Map.Entry<? extends K,​? extends V>... entries)

Возвращает неизменяемую карту, содержащую ключи и значения, извлеченные из заданных элементов. Сами элементы не хранятся в карте. Подробности см. в разделе Неизменяемые карты.

Прим. API:
Удобно создавать элементы карты, используя метод Map.entry(). Например,
import static java.util.Map.entry;

     Map<Integer,String> map = Map.ofEntries(
         entry(1, "a"),
         entry(2, "b"),
         entry(3, "c"),
         ...
         entry(26, "z"));
Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
entries - элементы, содержащие ключи и значения, из которых заполняется карта
Возвращает:
a Map содержащий указанные отображения
Выбрасывает:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой элемент, ключ или значение null, или если массив entries null
С тех пор как:
9
См. также:
Map.entry()

entry

static <K,V> Map.Entry<K,​V> entry​(K k,
                                              V v)

Возвращает неизменяемый Map.Entry, содержащий заданный ключ и значение. Эти элементы подходят для заполнения экземпляров Map с помощью метода Map.ofEntries(). Экземпляры Entry , созданные этим методом, обладают следующими характеристиками:

  • Они не допускают null ключей и значений. Попытки создать их с использованием null ключа или значения приводят к NullPointerException.
  • Они неизменяемы. Вызовы Entry.setValue() на возвращенном Entry приводят к UnsupportedOperationException.
  • Они не сериализуемы.
  • Они являются бессвязными. Вызывающие стороны не должны делать предположений об идентичности возвращенных экземпляров. Этот метод свободен создавать новые экземпляры или повторно использовать существующие. Следовательно, операции, чувствительные к идентичности на этих экземплярах (сравнение по ссылке (==), идентификационный код хэша и синхронизация) ненадежны и следует избегать.

Прим. API:
Для сериализуемого Entry, см. AbstractMap.SimpleEntry или AbstractMap.SimpleImmutableEntry.
Параметры типа:
K - тип ключа
V - тип значения
Параметры:
k - ключ
v - значение
Возвращает:
an Entry содержащий заданный ключ и значение
Выбрасывает:
NullPointerException - если ключ или значение null
С тех пор как:
9
См. также:
Map.ofEntries()

copyOf

static <K,V> Map<K,​V> copyOf​(Map<? extends K,​? extends V> map)

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

Примечание реализации:
Если предоставленная карта является неизменяемой картой, вызов copyOf обычно не создаст копию.
Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
map - карта, из которой берутся записи, не должна быть null
Возвращает:
a Map, содержащий записи заданной Map
Исключения:
NullPointerException - если карта null, или если она содержит какие-либо null-ключи или значения
С:
10

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html

Spec-Zone .ru
спецификации, руководства, описания, API