Spec-Zone.ru › OpenJDK 24

Интерфейс MapV>

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

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

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

Since:
1.2
См. также:
  • HashMap
  • TreeMap
  • Hashtable
  • SortedMap
  • Collection
  • Set

Краткое описание вложенных классов

Modifier and Type Interface Description
static interface  Map.Entry<K,V>
Запись карты (пара ключ-значение).

Краткое описание методов

Modifier and Type Method Description
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-ключей или 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
Параметры:
o - объект для сравнения на равенство с этой картой
Возвращает:
true, если указанный объект равен этой карте
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Возвращает значение хэш-кода для этой карты. Хэш-код карты определяется как сумма хэш-кодов каждого элемента в представлении entrySet() карты. Это гарантирует, что m1.equals(m2) подразумевает, что m1.hashCode()==m2.hashCode() для любых двух карт m1 и m2, как требуется общим контрактом Object.hashCode().
Overrides:
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-ключи или null-значения (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения предотвращает его хранение в этой карте (необязательно)
С момента:
1.8

удалить

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

заменить

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

заменить

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-ключи, или функция переназначения null
UnsupportedOperationException - если операция computeIfPresent не поддерживается этим массивом (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этом массиве (необязательно)
IllegalArgumentException - если некоторые свойства указанного ключа или значения препятствуют его хранению в этом массиве (необязательно)
С:
1.8

compute

default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить отображение для указанного ключа и его текущего сопоставленного значения или null, если текущего отображения нет (необязательная операция). Например, для создания или добавления String msg к отображению значения:
 
 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-ключи, или функция переназначения 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-ключи, или значение или функция переназначения 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
END_OF_DOCUMENT_MARKER

of

static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2)
Возвращает неизменяемую карту, содержащую два отображения. См. Неизменяемые карты для получения подробной информации.
Параметры типа:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
Возвращает:
a Map containing the specified mappings
Исключения:
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 - значение третьего отображения
Возвращает:
a Map containing the specified mappings
Исключения:
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 - значение четвёртого отображения
Возвращает:
a Map containing the specified mappings
Исключения:
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 - значение пятого отображения
Возвращает:
a Map containing the specified mappings
Исключения:
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 - значение шестого отображения
Возвращает:
a Map containing the specified mappings
Исключения:
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 containing the specified mappings
Исключения:
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 - значение первого сопоставления
...
Возвращает:
a Map, содержащую указанные сопоставления
Исключения:
...
С тех пор как:
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
Параметры:
...
Возвращает:
a Map, содержащую указанные сопоставления
Исключения:
...
С тех пор как:
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.Entry, содержащие ключи и значения, из которых заполняется карта
Возвращает:
a Map, содержащую указанные сопоставления
Исключения:
...
С тех пор как:
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 - значение
Возвращает:
a Entry, содержащую указанный ключ и значение
Исключения:
NullPointerException - если ключ или значение являются null
С тех пор как:
9
См. также:
  • Map.ofEntries()

copyOf

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Map.html

Spec-Zone.ru

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