Spec-Zone.ru › OpenJDK 17

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

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

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

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

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

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

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

В некоторых реализациях карт существуют ограничения на ключи и значения, которые они могут содержать. Например, некоторые реализации запрещают null-ключи и -значения, а некоторые имеют ограничения на типы своих ключей. Попытка вставить недопустимый ключ или значение вызывает необработанное исключение, обычно 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.

С:
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)
Возвращает неизменяемую карту содержащую записи из заданной карты.
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 сопоставлений, содержащихся в этом отображении. Множество поддерживается отображением, поэтому изменения в отображении отражаются в множестве и наоборот. Если отображение изменяется во время итерации по множеству (кроме операций самого итератора или операции 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 - если операция set не поддерживается итератором множества записей этого отображения.
ClassCastException - если класс значения замены препятствует его хранению в этом отображении
NullPointerException - если указанная функция или значение замены равны null, и это отображение не допускает null-значений
ClassCastException - если значение замены неподходящего типа для этого отображения (необязательно)
NullPointerException - если функция или значение замены равны 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 - если операция put не поддерживается этим отображением (необязательно)
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

заменить

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

computeIfPresent

default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Если значение для указанного ключа присутствует и не равно null, пытается вычислить новое сопоставление, учитывая ключ и его текущее сопоставленное значение.

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

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

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

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

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

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

compute

default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Попытка вычислить отображение для указанного ключа и его текущего сопоставленного значения (или null если текущего отображения нет). Например, для создания или добавления String сообщения к сопоставленному значению:
 
 map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(Метод merge() часто проще использовать в таких целях.)

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

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

Implementation Requirements:
Реализация по умолчанию эквивалентна выполнению следующих шагов для этой 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 должны документировать, применяется ли функция переназначения один раз атомарно только если значение отсутствует.

Parameters:
key - ключ, с которым должно быть связано указанное значение
remappingFunction - функция переназначения для вычисления значения
Returns:
новое значение, связанное с указанным ключом, или null, если нет
Throws:
NullPointerException - если указанный ключ равен null, а эта карта не поддерживает ключи null, или remappingFunction равен null
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения препятствует его хранению в этой карте (необязательно)
Since:
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, отображение удаляется. Если сама функция переназначения вызывает (непроверенное) исключение, исключение перебрасывается, а текущее отображение остается неизменным.

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

Implementation Requirements:
Реализация по умолчанию эквивалентна выполнению следующих шагов для этой 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 должны документировать, применяется ли функция переназначения один раз атомарно только если значение отсутствует.

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

of

static <K, V> Map<K,V> of()
Возвращает неизменяемую карту, содержащую нулевые отображения. Подробнее см. Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Returns:
пустая Map
Since:
9

of

static <K, V> Map<K,V> of(K k1, V v1)
Возвращает неизменяемую карту, содержащую одно отображение. Подробнее см. Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ отображения
v1 - значение отображения
Returns:
Map содержащую указанное отображение
Throws:
NullPointerException - если ключ или значение null
Since:
9

of

static <K, V> Map<K,V> of(K k1, V v1, K k2, V v2)
Возвращает неизменяемую карту, содержащую два отображения. Подробнее см. Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
Returns:
Map содержащую указанные отображения
Throws:
IllegalArgumentException - если ключи дублируются
NullPointerException - если любой ключ или значение null
Since:
9

of

static <K, V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3)
Возвращает неизменяемую карту, содержащую три отображения. Подробнее см. Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
k3 - ключ третьего отображения
v3 - значение третьего отображения
Returns:
Map содержащую указанные отображения
Throws:
IllegalArgumentException - если есть дублирующиеся ключи
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую четыре сопоставления. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую пять сопоставлений. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую шесть сопоставлений. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую семь сопоставлений. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
k7 - ключ седьмого сопоставления
v7 - значение седьмого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую восемь сопоставлений. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
k7 - ключ седьмого сопоставления
v7 - значение седьмого сопоставления
k8 - ключ восьмого сопоставления
v8 - значение восьмого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
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)
Возвращает неизменяемую карту, содержащую девять сопоставлений. Подробности см. в разделе Неизменяемые карты.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
k7 - ключ седьмого сопоставления
v7 - значение седьмого сопоставления
k8 - ключ восьмого сопоставления
v8 - значение восьмого сопоставления
k9 - ключ девятого сопоставления
v9 - значение девятого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если есть дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
9
END_OF_DOCUMENT_MARKER

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)
Возвращает неизменяемую карту, содержащую десять сопоставлений. См. Неизменяемые карты для получения подробностей.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
k1 - ключ первого сопоставления
v1 - значение первого сопоставления
k2 - ключ второго сопоставления
v2 - значение второго сопоставления
k3 - ключ третьего сопоставления
v3 - значение третьего сопоставления
k4 - ключ четвертого сопоставления
v4 - значение четвертого сопоставления
k5 - ключ пятого сопоставления
v5 - значение пятого сопоставления
k6 - ключ шестого сопоставления
v6 - значение шестого сопоставления
k7 - ключ седьмого сопоставления
v7 - значение седьмого сопоставления
k8 - ключ восьмого сопоставления
v8 - значение восьмого сопоставления
k9 - ключ девятого сопоставления
v9 - значение девятого сопоставления
k10 - ключ десятого сопоставления
v10 - значение десятого сопоставления
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если имеются дубликаты ключей
NullPointerException - если любой ключ или значение null
Since:
9

ofEntries

@SafeVarargs static <K, V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
Возвращает неизменяемую карту, содержащую ключи и значения, извлеченные из заданных пар. Сами пары не хранятся в карте. См. Неизменяемые карты для получения подробностей.
API Note:
Удобно создавать пары с помощью метода 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"));
 
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
entries - Map.Entry содержащие ключи и значения, из которых заполняется карта
Returns:
a Map, содержащую указанные сопоставления
Throws:
IllegalArgumentException - если имеются дубликаты ключей
NullPointerException - если любая пара, ключ или значение null, или если массив entries null
Since:
9
See Also:
  • 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.
  • Они не сериализуемы.
  • Они являются value-based. Программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать их для синхронизации, в противном случае может произойти непредсказуемое поведение. Например, в будущей версии синхронизация может потерпеть неудачу. Звонящие не должны делать предположений об идентичности возвращённых экземпляров. Этот метод свободен создавать новые экземпляры или повторно использовать существующие.
API Note:
Для сериализуемой Entry, см. AbstractMap.SimpleEntry или AbstractMap.SimpleImmutableEntry.
Type Parameters:
K - тип ключа
V - тип значения
Parameters:
k - ключ
v - значение
Returns:
a Entry, содержащая указанный ключ и значение
Throws:
NullPointerException - если ключ или значение null
Since:
9
See Also:
  • Map.ofEntries()

copyOf

static <K, V> Map<K,V> copyOf(Map<? extends K,? extends V> map)
Возвращает неизменяемую карту, содержащую пары заданной карты. Заданная карта не должна быть null, и она не должна содержать null ключи или значения. Если заданная карта впоследствии изменится, возвращаемая карта не будет отражать такие изменения.
Implementation Note:
Если заданная карта является неизменяемой картой, вызов copyOf обычно не создаст копию.
Type Parameters:
K - тип ключа Map
V - тип значения Map
Parameters:
map - Map, из которой извлекаются пары, не должна быть null
Returns:
a Map, содержащую пары заданной Map
Throws:
NullPointerException - если карта null, или если она содержит null ключи или значения
Since:
10

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

Spec-Zone.ru

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