Spec-Zone.ru › OpenJDK 21

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,V>
Элемент отображения (пара ключ-значение).

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

```
Модификатор и тип Метод Описание
void clear()
Удаляет все отображения из этого отображения (дополнительная операция).
default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Попытка вычислить отображение для указанного ключа и его текущего сопоставленного значения (или null, если текущего отображения нет).
default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
Если указанный ключ ещё не связан со значением (или связан с null), пытается вычислить его значение с помощью заданной функции отображения и вводит его в это отображение, если null.
default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Если значение для указанного ключа присутствует и не равно null, пытается вычислить новое отображение, заданное ключом и его текущим сопоставленным значением.
boolean containsKey(Object key)
Возвращает true, если это отображение содержит отображение для указанного ключа.
boolean containsValue(Object value)
Возвращает true, если это отображение отображает один или несколько ключей на указанное значение.
static <K, V> Map<K,V> copyOf(Map<? extends K,? extends V> map)
Возвращает неизменяемое отображение содержащее записи данного отображения.
static <K, V> Map.Entry<K,V> entry(K k, V v)
Возвращает неизменяемое Map.Entry содержащее заданный ключ и значение.
Set<Map.Entry<K,V>> entrySet()
Возвращает Set представление отображений, содержащихся в этом отображении.
boolean equals(Object o)
Сравнивает указанный объект с этим отображением на равенство.
default void forEach(BiConsumer<? super K,? super V> action)
Выполняет заданное действие для каждой записи в этом отображении до тех пор, пока все записи не будут обработаны или действие не выбросит исключение.
V get(Object key)
Возвращает значение, которому сопоставлен указанный ключ, или null, если в этом отображении нет отображения для ключа.
default V getOrDefault(Object key, V defaultValue)
Возвращает значение, которому сопоставлен указанный ключ, или defaultValue, если в этом отображении нет отображения для ключа.
int hashCode()
Возвращает хэш-код для этого отображения.
boolean isEmpty()
Возвращает true, если это отображение не содержит отображений ключ-значение.
Set<K> keySet()
Возвращает Set представление ключей, содержащихся в этом отображении.
default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
Если указанный ключ ещё не связан со значением или связан с null, связывает его с заданным ненулевым значением.
static <K, V> Map<K,V> of()
Возвращает неизменяемое отображение, содержащее ноль отображений.

Подробное описание методов

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.
Переопределяет:
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, и эта карта не допускает 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-ключей или 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 не поддерживается этой картой (необязательно)
UnsupportedOperationException - если ключ или значение имеют неприемлемый для этой карты тип (необязательно)
NullPointerException - если указанный ключ или значение равно null, и эта карта не допускает 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 для карт, которые не поддерживают нулевые значения, если oldValue равно null, за исключением случая, когда newValue также равно null.

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

Параметры:
key - ключ, с которым ассоциировано указанное значение
oldValue - значение, которое ожидается для ассоциации с указанным ключом
newValue - значение, которое должно быть ассоциировано с указанным ключом
Возвращает:
true если значение было заменено
Выбрасывает:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте
NullPointerException - если указанный ключ или newValue равно null, а эта карта не допускает нулевых ключей или значений
NullPointerException - если oldValue равно 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 с ключом, если реализация поддерживает нулевые значения.)
Выбрасывает:
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте (необязательно)
NullPointerException - если указанный ключ или значение равно 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, а эта карта не поддерживает нулевые ключи, или 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, а эта карта не поддерживает нулевые ключи, или remappingFunction равен null
UnsupportedOperationException - если операция put не поддерживается этой картой (необязательно)
ClassCastException - если класс указанного ключа или значения препятствует его хранению в этой карте (необязательно)
IllegalArgumentException - если какое-либо свойство указанного ключа или значения препятствует его хранению в этой карте (необязательно)
С тех пор:
1.8

compute

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

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

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

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

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

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

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

of

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

of

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

of

static <K, V> Map<K,V> of(K k1, V v1, K k2, V v2)
Возвращает неизменяемую карту, содержащую два отображения. Подробности см. в Неизменяемые карты.
Тип параметров:
K - тип ключа Map
V - тип значения Map
Параметры:
k1 - ключ первого отображения
v1 - значение первого отображения
k2 - ключ второго отображения
v2 - значение второго отображения
Возвращает:
карту, содержащую указанные отображения
Исключения:
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 - значение третьего отображения
Возвращает:
карту, содержащую указанные отображения
Исключения:
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)
Возвращает неизменяемую карту, содержащую четыре сопоставления. Подробности см. в разделе Неизменяемые карты.
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

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.
  • Они не сериализуемы.
  • Они являются безусловными. Программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать их для синхронизации, иначе может произойти непредсказуемое поведение. Например, в будущей версии синхронизация может завершиться ошибкой. Вызывающие стороны не должны делать никаких предположений об идентичности возвращаемых экземпляров. Данный метод свободен создавать новые экземпляры или повторно использовать существующие.
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 - карта, из которой извлекаются элементы, не должна быть null
Returns:
a Map , содержащую элементы заданной Map
Throws:
NullPointerException - если карта null, или если она содержит null-ключи или значения
Since:
10

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

Spec-Zone.ru

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