Spec-Zone.ru › OpenJDK 25

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

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

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

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

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

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

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

Некоторые реализации карт накладывают ограничения на ключи и значения, которые могут содержаться в них. Например, некоторые реализации запрещают нулевые ключи и значения, а некоторые ограничивают типы ключей. Попытка вставить недопустимый ключ или значение приводит к выбрасыванию непроверяемого исключения, обычно NullPointerException или ClassCastException. Попытка проверить наличие недопустимого ключа или значения может привести к выбрасыванию исключения либо просто вернуть false; одни реализации ведут себя первым образом, другие — вторым. В более общем случае попытка выполнить операцию с недопустимым ключом или значением, завершение которой не приведёт к вставке недопустимого элемента в карту, может привести к выбрасыванию исключения или завершиться успешно — на усмотрение реализации. В спецификации этого интерфейса такие исключения помечены как «необязательные».

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

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

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

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

  • Они неизменяемы. Ключи и значения нельзя добавлять, удалять или обновлять. Вызов любого метода-мутатора для Map всегда приводит к выбрасыванию UnsupportedOperationException. Однако, если содержащиеся в карте ключи или значения сами являются изменяемыми, это может привести к непоследовательному поведению Map или к тому, что её содержимое будет казаться изменившимся.
  • Они не допускают 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)
Возвращает неизменяемую Map, содержащую записи указанной 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, сопоставляет ему заданное ненулевое значение (необязательная операция).
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
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
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.
Переопределяет:
equals в классе Object
Параметры:
o — объект, который сравнивается с этой картой на равенство
Возвращает:
true, если указанный объект равен этой карте
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

getOrDefault

default V getOrDefault(Object key, V defaultValue)
Возвращает значение, сопоставленное с указанным ключом, или defaultValue, если эта карта не содержит отображения для ключа.
Требования к реализации:
Реализация по умолчанию не дает гарантий относительно свойств синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и задокументировать свойства его конкурентного выполнения.
Параметры:
key — ключ, связанное с которым значение нужно вернуть
defaultValue — отображение по умолчанию для ключа
Возвращает:
значение, сопоставленное с указанным ключом, или defaultValue, если эта карта не содержит отображения для ключа
Вызывает:
ClassCastException — если тип ключа недопустим для этой карты (необязательно)
NullPointerException — если указанный ключ равен null, а эта карта не допускает ключи null (необязательно)
Начиная с версии:
1.8

forEach

default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи в этой карте, пока не будут обработаны все записи или действие не вызовет исключение. Если в классе-реализации не указано иное, действия выполняются в порядке обхода множества записей (если порядок обхода задан). Исключения, выброшенные действием, передаются вызывающему коду.
Требования к реализации:
Реализация по умолчанию эквивалентна следующему для этой map:
for (Map.Entry<K, V> entry : map.entrySet())
    action.accept(entry.getKey(), entry.getValue());
Реализация по умолчанию не дает гарантий относительно свойств синхронизации или атомарности этого метода. Любая реализация, предоставляющая гарантии атомарности, должна переопределить этот метод и задокументировать свойства его конкурентного выполнения.
Параметры:
action — действие, выполняемое для каждой записи
Вызывает:
NullPointerException — если указанное действие равно null
ConcurrentModificationException — если обнаружено, что запись удалена во время обхода
Начиная с версии:
1.8

replaceAll

default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не вызовет исключение (необязательная операция). Исключения, выброшенные функцией, передаются вызывающему коду.
Требования к реализации:

Реализация по умолчанию эквивалентна следующему для этой map:

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

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

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

putIfAbsent

default V putIfAbsent(K key, V value)
Если с указанным ключом еще не связано значение (или ему сопоставлено null), связывает его с заданным значением и возвращает null; в противном случае возвращает текущее значение (необязательная операция).
Требования к реализации:
Реализация по умолчанию эквивалентна следующему для этой map:
V v = map.get(key);
if (v == null)
    v = map.put(key, value);

return v;

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

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

remove

default boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
Требования к реализации:
Реализация по умолчанию эквивалентна следующему для этой map:
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
    map.remove(key);
    return true;
} else
    return false;

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

Параметры:
key — ключ, с которым связано указанное значение
value — значение, которое, как ожидается, связано с указанным ключом
Возвращает:
true, если значение было удалено
Вызывает:
UnsupportedOperationException — если эта карта не поддерживает операцию remove (необязательно)
ClassCastException — если тип ключа или значения недопустим для этой карты (необязательно)
NullPointerException — если указанный ключ или значение равны null, а эта карта не допускает ключи или значения null (необязательно)
Начиная с версии:
1.8

replace

default boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
Требования к реализации:
Реализация по умолчанию эквивалентна следующему для этой map:
if (map.containsKey(key) && Objects.equals(map.get(key), oldValue)) {
    map.put(key, newValue);
    return true;
} else
    return false;
Реализация по умолчанию не выбрасывает NullPointerException для карт, не поддерживающих значения null, если oldValue равен null, кроме случая, когда newValue также равен null.

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

Параметры:
key — ключ, с которым связано указанное значение
oldValue — значение, которое, как ожидается, связано с указанным ключом
newValue — значение, которое нужно связать с указанным ключом
Возвращает:
true, если значение было заменено
Вызывает:
UnsupportedOperationException — если эта карта не поддерживает операцию replace (необязательно)
ClassCastException — если класс указанного ключа или значения не позволяет сохранить его в этой карте
NullPointerException — если указанный ключ или newValue равны null, а эта карта не допускает ключи или значения null
NullPointerException — если oldValue равен null, а эта карта не допускает значения null (необязательно)
IllegalArgumentException — если какое-либо свойство указанного ключа или значения не позволяет сохранить его в этой карте
Начиная с версии:
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 с ключом, если реализация поддерживает значения null.)
Вызывает:
UnsupportedOperationException — если эта карта не поддерживает операцию replace (необязательно)
ClassCastException — если класс указанного ключа или значения не позволяет сохранить его в этой карте (необязательно)
NullPointerException — если указанный ключ или значение равны 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 — если эта карта не поддерживает операцию computeIfAbsent (необязательно)
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 — если эта карта не поддерживает операцию computeIfPresent (необязательно)
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:
V oldValue = map.get(key);
V newValue = remappingFunction.apply(key, oldValue);
if (newValue != null) {
    map.put(key, newValue);
} else if (oldValue != null || map.containsKey(key)) {
    map.remove(key);
}
return newValue;

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

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

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

merge

default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу еще не сопоставлено значение или ему сопоставлено значение null, связывает его с указанным ненулевым значением (необязательная операция). В противном случае заменяет связанное значение результатом заданной функции пересопоставления или удаляет его, если результат равен 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 — если эта карта не поддерживает операцию merge (необязательно)
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 — значение седьмого соответствия
Возвращает:
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 — значение восьмого соответствия
Возвращает:
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 — значение девятого соответствия
Возвращает:
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 — значение десятого соответствия
Возвращает:
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 — массив Map.Entrys, содержащих ключи и значения, из которых формируется карта
Возвращает:
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 — значение
Возвращает:
Entry, содержащий указанные ключ и значение
Исключения:
NullPointerException — если ключ или значение равны null
Начиная с:
9
См. также:
  • Map.ofEntries()

copyOf

static <K,V> Map<K,V> copyOf(Map<? extends K, ? extends V> map)
Возвращает неизменяемую Map, содержащую записи из заданной Map. Заданная Map не должна быть null и не должна содержать ключи или значения null. Если заданная Map впоследствии будет изменена, возвращённая Map не будет отражать эти изменения.
Примечание по реализации:
Если заданная Map является неизменяемой Map, вызов copyOf обычно не создаёт копию.
Параметры типа:
K — тип ключа Map
V — тип значения Map
Параметры:
map — Map, из которой берутся записи; не должна быть null
Возвращает:
Map, содержащую записи из заданной Map
Исключения:
NullPointerException — если map равна null или содержит ключи либо значения null
Начиная с:
10

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе документация Java SE, где приведены более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/util/Map.html

Spec-Zone.ru

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