Spec-Zone.ru › OpenJDK 27

Класс IdentityHashMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.IdentityHashMap<K,V>
Параметры типа:
K - тип ключей, хранящихся в этой карте
V - тип сопоставленных значений
Все реализованные интерфейсы:
Serializable, Cloneable, Map<K,V>
public class IdentityHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Serializable, Cloneable
Этот класс реализует интерфейс Map с помощью хеш-таблицы, используя равенство ссылок вместо равенства объектов при сравнении ключей (и значений). Иными словами, в IdentityHashMap два ключа k1 и k2 считаются равными тогда и только тогда, когда (k1==k2). (В обычных реализациях Map (например, HashMap) два ключа k1 и k2 считаются равными тогда и только тогда, когда (k1==null ? k2==null : k1.equals(k2)).)

Этот класс не является реализацией Map общего назначения! Хотя этот класс реализует интерфейс Map, он намеренно нарушает общий контракт Map's, который требует использовать метод equals при сравнении объектов. Этот класс предназначен только для редких случаев, когда требуется семантика равенства ссылок.

Для элементов коллекций-представлений этой карты также используется семантика равенства ссылок. Дополнительные сведения см. в методах keySet, values и entrySet.

Типичный вариант использования этого класса — преобразования графов объектов с сохранением топологии, например сериализация или глубокое копирование. Для выполнения такого преобразования программа должна поддерживать «таблицу узлов», которая отслеживает все ссылки на объекты, уже обработанные ранее. Таблица узлов не должна считать разные объекты равными, даже если они оказываются равными. Ещё один типичный вариант использования этого класса — поддержка объектов-прокси. Например, отладочное средство может поддерживать объект-прокси для каждого объекта отлаживаемой программы.

Этот класс предоставляет все необязательные операции с картами и допускает значения null и ключ null. Этот класс не гарантирует определённый порядок элементов карты; в частности, он не гарантирует, что порядок останется неизменным со временем.

Этот класс обеспечивает постоянное время выполнения основных операций (get и put) при условии, что системная функция хеширования идентичности (System.identityHashCode(Object)) правильно распределяет элементы по сегментам.

У этого класса есть один параметр настройки (который влияет на производительность, но не на семантику): ожидаемый максимальный размер. Этот параметр задаёт максимальное число сопоставлений ключ-значение, которое, как предполагается, будет храниться в карте. Внутри этот параметр используется для определения начального числа сегментов хеш-таблицы. Точная зависимость между ожидаемым максимальным размером и числом сегментов не определена.

Если размер карты (число сопоставлений ключ-значение) значительно превысит ожидаемый максимальный размер, число сегментов увеличится. Увеличение числа сегментов («перехеширование») может быть довольно затратным, поэтому рекомендуется создавать карты идентичности с достаточно большим ожидаемым максимальным размером. С другой стороны, для обхода представлений коллекций требуется время, пропорциональное числу сегментов в хеш-таблице, поэтому не следует задавать слишком большой ожидаемый максимальный размер, если особенно важны производительность обхода или расход памяти.

Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к карте идентичности и хотя бы один из них структурно изменяет карту, необходимо обеспечить внешнюю синхронизацию. (Структурное изменение — это любая операция, добавляющая или удаляющая одно или несколько сопоставлений; простое изменение значения, связанного с ключом, уже содержащимся в экземпляре, не является структурным изменением.) Обычно для этого выполняют синхронизацию по объекту, который естественным образом инкапсулирует карту. Если такого объекта нет, карту следует «обернуть» с помощью метода Collections.synchronizedMap. Лучше всего сделать это при создании карты, чтобы предотвратить случайный доступ к ней без синхронизации:

  Map m = Collections.synchronizedMap(new IdentityHashMap(...));

Итераторы, возвращаемые методом iterator коллекций, предоставляемых всеми методами-представлениями коллекций этого класса, являются быстро завершающимися: если после создания итератора карта каким-либо образом структурно изменяется, кроме как через собственный метод remove итератора, итератор выбрасывает исключение ConcurrentModificationException. Таким образом, при одновременном изменении карты итератор быстро и корректно завершается, а не рискует повести себя произвольно и непредсказуемо в неопределённый момент в будущем.

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

Этот класс входит в состав Java Collections Framework.

Примечание по реализации:

Это простая хеш-таблица с линейным зондированием, описанная, например, в книгах Седжвика и Кнута. Массив содержит чередующиеся ключи и значения: ключи расположены по чётным индексам, а значения — по нечётным. (Для больших таблиц такое расположение обеспечивает лучшую локальность, чем использование отдельных массивов.) Во многих реализациях Java и при многих сочетаниях операций этот класс обеспечивает более высокую производительность, чем HashMap, в котором вместо линейного зондирования используется цепочечное хеширование.

С момента:
1.4
См. также:
  • System.identityHashCode(Object)
  • Object.hashCode()
  • Collection
  • Map
  • HashMap
  • TreeMap
  • Форма сериализации

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

Вложенные классы и интерфейсы, объявленные в классе AbstractMap

AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Модификатор и тип Класс Описание
static class  AbstractMap.SimpleEntry<K,V>
Запись, содержащая ключ и значение.
static class  AbstractMap.SimpleImmutableEntry<K,V>
Неизменяемая запись, содержащая ключ и значение.

Вложенные классы и интерфейсы, объявленные в интерфейсе Map

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

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

Конструктор Описание
IdentityHashMap()
Создаёт новую пустую карту идентичности со значением ожидаемого максимального размера по умолчанию (21).
IdentityHashMap(int expectedMaxSize)
Создаёт новую пустую карту с указанным ожидаемым максимальным размером.
IdentityHashMap(Map<? extends K, ? extends V> m)
Создаёт новую карту идентичности, содержащую сопоставления ключ-значение из указанной карты.

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

Модификатор и тип Метод Описание
void clear()
Удаляет все сопоставления из этой карты.
Object clone()
Возвращает поверхностную копию этой карты идентичности: сами ключи и значения не клонируются.
boolean containsKey(Object key)
Проверяет, является ли указанная ссылка на объект ключом в этой карте идентичности.
boolean containsValue(Object value)
Проверяет, является ли указанная ссылка на объект значением в этой карте идентичности.
Set<Map.Entry<K,V>> entrySet()
Возвращает представление содержащихся в этой карте сопоставлений в виде Set.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство.
V get(Object key)
Возвращает значение, которому сопоставлен указанный ключ, или null, если в этой карте нет сопоставления для ключа.
int hashCode()
Возвращает значение хеш-кода этой карты.
boolean isEmpty()
Возвращает true, если эта карта идентичности не содержит сопоставлений ключ-значение.
Set<K> keySet()
Возвращает представление ключей этой карты в виде множества с семантикой идентичности.
V put(K key, V value)
Связывает указанное значение с указанным ключом в этой карте идентичности.
void putAll(Map<? extends K, ? extends V> m)
Копирует все сопоставления из указанной карты в эту карту.
V remove(Object key)
Удаляет из этой карты сопоставление для данного ключа, если оно есть.
boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).
int size()
Возвращает число сопоставлений ключ-значение в этой карте идентичности.
Collection<V> values()
Возвращает представление содержащихся в этой карте значений в виде Collection.

Методы, объявленные в классе AbstractMap

toString
Модификатор и тип Метод Описание
String toString()
Возвращает строковое представление этой карты.

Методы, объявленные в классе Object

finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного периода реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного периода реального времени.

Методы, объявленные в интерфейсе Map

compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, replace, replaceAll
Модификатор и тип Метод Описание
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)
Если для указанного ключа имеется ненулевое значение, пытается вычислить новое сопоставление, используя ключ и текущее сопоставленное ему значение (необязательная операция).
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи этой карты, пока не будут обработаны все записи или действие не выбросит исключение.
default V getOrDefault(Object key, V defaultValue)
Возвращает значение, которому сопоставлен указанный ключ, или defaultValue, если в этой карте нет сопоставления для ключа.
default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу ещё не сопоставлено значение или ему сопоставлено значение null, связывает его с указанным ненулевым значением (необязательная операция).
default V putIfAbsent(K key, V value)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), связывает его с указанным значением и возвращает null; в противном случае возвращает текущее значение (необязательная операция).
default V replace(K key, V value)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено какое-либо значение (необязательная операция).
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция).

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

IdentityHashMap

public IdentityHashMap()
Создает новую пустую карту с хешированием по идентичности и максимальным ожидаемым размером по умолчанию (21).

IdentityHashMap

public IdentityHashMap(int expectedMaxSize)
Создает новую пустую карту с указанным максимальным ожидаемым размером. Добавление в карту числа пар «ключ-значение», превышающего ожидаемое, может привести к расширению внутренней структуры данных, что может занять некоторое время.
Параметры:
expectedMaxSize — максимальный ожидаемый размер карты
Исключения:
IllegalArgumentException — если expectedMaxSize отрицательно

IdentityHashMap

public IdentityHashMap(Map<? extends K, ? extends V> m)
Создает новую карту с хешированием по идентичности, содержащую пары «ключ-значение» из указанной карты.
Параметры:
m — карта, пары «ключ-значение» из которой будут помещены в эту карту
Исключения:
NullPointerException — если указанная карта равна null

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

size

public int size()
Возвращает количество пар «ключ-значение» в этой карте с хешированием по идентичности.
Указан в:
size в интерфейсе Map<K,V>
Переопределяет:
size в классе AbstractMap<K,V>
Возвращает:
количество пар «ключ-значение» в этой карте

isEmpty

public boolean isEmpty()
Возвращает true, если эта карта с хешированием по идентичности не содержит пар «ключ-значение».
Указан в:
isEmpty в интерфейсе Map<K,V>
Переопределяет:
isEmpty в классе AbstractMap<K,V>
Возвращает:
true, если эта карта с хешированием по идентичности не содержит пар «ключ-значение»

get

public V get(Object key)
Возвращает значение, которому сопоставлен указанный ключ, или null, если в этой карте нет соответствия для данного ключа.

Формально, если в этой карте имеется соответствие от ключа k к значению v такое, что (key == k), этот метод возвращает v; в противном случае он возвращает null. (Такое соответствие может быть не более чем одно.)

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

Указан в:
get в интерфейсе Map<K,V>
Переопределяет:
get в классе AbstractMap<K,V>
Параметры:
key — ключ, значение которого нужно вернуть
Возвращает:
значение, которому сопоставлен указанный ключ, или null, если в этой карте нет соответствия для данного ключа
См. также:
  • put(Object, Object)

containsKey

public boolean containsKey(Object key)
Проверяет, является ли указанная ссылка на объект ключом в этой карте с хешированием по идентичности. Возвращает true тогда и только тогда, когда в этой карте есть соответствие с ключом k такое, что (key == k).
Указан в:
containsKey в интерфейсе Map<K,V>
Переопределяет:
containsKey в классе AbstractMap<K,V>
Параметры:
key — возможный ключ
Возвращает:
true, если указанная ссылка на объект является ключом в этой карте
См. также:
  • containsValue(Object)

containsValue

public boolean containsValue(Object value)
Проверяет, является ли указанная ссылка на объект значением в этой карте с хешированием по идентичности. Возвращает true тогда и только тогда, когда в этой карте есть соответствие со значением v такое, что (value == v).
Указан в:
containsValue в интерфейсе Map<K,V>
Переопределяет:
containsValue в классе AbstractMap<K,V>
Параметры:
value — значение, наличие которого нужно проверить в этой карте
Возвращает:
true, если эта карта сопоставляет одну или несколько ключей указанной ссылке на объект
См. также:
  • containsKey(Object)

put

public V put(K key, V value)
Связывает указанное значение с указанным ключом в этой карте с хешированием по идентичности. Если в этой карте уже contains имеется соответствие для ключа, старое значение заменяется; в противном случае в карту добавляется новое соответствие.
Указан в:
put в интерфейсе Map<K,V>
Переопределяет:
put в классе AbstractMap<K,V>
Параметры:
key — ключ, с которым нужно связать указанное значение
value — значение, которое нужно связать с указанным ключом
Возвращает:
предыдущее значение, связанное с key, или null, если для key не было соответствия. (Возвращаемое значение null также может означать, что ранее карта связывала null с key.)
См. также:
  • Object.equals(Object)
  • get(Object)
  • containsKey(Object)

putAll

public void putAll(Map<? extends K, ? extends V> m)
Копирует в эту карту все соответствия из указанной карты. Для каждого соответствия из указанной карты, если в этой карте уже contains имеется соответствие для ключа, его значение заменяется значением из указанной карты; в противном случае в эту карту добавляется новое соответствие.
Указан в:
putAll в интерфейсе Map<K,V>
Переопределяет:
putAll в классе AbstractMap<K,V>
Параметры:
m — соответствия, которые нужно сохранить в этой карте
Исключения:
NullPointerException — если указанная карта равна null

remove

public V remove(Object key)
Удаляет из этой карты соответствие для данного ключа, если оно имеется. Соответствие удаляется тогда и только тогда, когда оно содержит ключ k такой, что (key == k).
Указан в:
remove в интерфейсе Map<K,V>
Переопределяет:
remove в классе AbstractMap<K,V>
Параметры:
key — ключ, соответствие для которого нужно удалить из карты
Возвращает:
предыдущее значение, связанное с key, или null, если для key не было соответствия. (Возвращаемое значение null также может означать, что ранее карта связывала null с key.)

clear

public void clear()
Удаляет из этой карты все соответствия. После возврата этого вызова карта будет пустой.
Указан в:
clear в интерфейсе Map<K,V>
Переопределяет:
clear в классе AbstractMap<K,V>

equals

public boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство. Возвращает true, если переданный объект также является картой и обе карты представляют идентичные соответствия ссылок на объекты. Формально эта карта равна другой карте m тогда и только тогда, когда this.entrySet().equals(m.entrySet()). Спецификацию равенства элементов этой карты см. в методе entrySet.

Из-за семантики этой карты, основанной на равенстве ссылок, требования симметричности и транзитивности контракта Object.equals могут нарушаться при сравнении этой карты с обычной картой. Однако соблюдение контракта Object.equals гарантируется для экземпляров IdentityHashMap.

Указан в:
equals в интерфейсе Map<K,V>
Переопределяет:
equals в классе AbstractMap<K,V>
Параметры:
o — объект, который нужно сравнить с этой картой на равенство
Возвращает:
true, если указанный объект равен этой карте
См. также:
  • Object.equals(Object)

hashCode

public int hashCode()
Возвращает значение хеш-кода этой карты. Хеш-код карты определяется как сумма хеш-кодов всех ее элементов. Спецификацию хеш-кода элементов этой карты см. в методе entrySet.

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

Из-за семантики, основанной на равенстве ссылок, для экземпляров Map.Entry в множестве, возвращаемом методом entrySet этой карты, требование контракта Object.hashCode, упомянутое в предыдущем абзаце, может нарушаться, если один из сравниваемых объектов является экземпляром IdentityHashMap, а другой — обычной картой.

Указан в:
hashCode в интерфейсе Map<K,V>
Переопределяет:
hashCode в классе AbstractMap<K,V>
Возвращает:
значение хеш-кода этой карты
См. также:
  • Object.equals(Object)
  • equals(Object)

clone

public Object clone()
Возвращает поверхностную копию этой карты с хешированием по идентичности: сами ключи и значения не клонируются.
Переопределяет:
clone в классе AbstractMap<K,V>
Возвращает:
поверхностную копию этой карты
См. также:
  • Cloneable

keySet

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

Хотя объект, возвращаемый этим методом, реализует интерфейс Set, он не соблюдает общий контракт Set's. Как и связанная с ним карта, возвращаемое этим методом множество определяет равенство элементов по идентичности ссылок, а не по равенству объектов. Это влияет на поведение методов contains, remove, containsAll, equals и hashCode.

Метод equals возвращаемого множества возвращает true, только если указанный объект является множеством, содержащим в точности те же ссылки на объекты, что и возвращаемое множество. Требования симметричности и транзитивности контракта Object.equals могут нарушаться при сравнении множества, возвращаемого этим методом, с обычным множеством. Однако соблюдение контракта Object.equals гарантируется для множеств, возвращаемых этим методом.

Метод hashCode возвращаемого множества возвращает сумму хеш-кодов идентичности элементов множества, а не сумму их хеш-кодов. Это обусловлено изменением семантики метода equals и необходимо для соблюдения общего контракта метода Object.hashCode для множеств, возвращаемых этим методом.

Указан в:
keySet в интерфейсе Map<K,V>
Переопределяет:
keySet в классе AbstractMap<K,V>
Возвращает:
представление ключей этой карты в виде множества, основанного на идентичности
См. также:
  • Object.equals(Object)
  • System.identityHashCode(Object)

values

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

Хотя объект, возвращаемый этим методом, реализует интерфейс Collection, он не соблюдает общий контракт Collection's. Как и связанная с ним карта, возвращаемая этим методом коллекция определяет равенство элементов по идентичности ссылок, а не по равенству объектов. Это влияет на поведение методов contains, remove и containsAll.

Указан в:
values в интерфейсе Map<K,V>
Переопределяет:
values в классе AbstractMap<K,V>
Возвращает:
представление значений этой карты в виде коллекции

entrySet

public Set<Map.Entry<K,V>> entrySet()
Возвращает представление содержащихся в этой карте соответствий в виде Set. Каждый элемент возвращаемого множества — это Map.Entry, основанный на равенстве ссылок. Множество связано с картой, поэтому изменения карты отражаются во множестве, и наоборот. Если карта изменяется во время итерации по множеству, результаты итерации не определены. Множество поддерживает удаление элементов, при котором соответствующее сопоставление удаляется из карты, с помощью методов Iterator.remove, Set.remove, removeAll, retainAll и clear. Методы add и addAll не поддерживаются.

Как и связанная с ним карта, объекты Map.Entry в множестве, возвращаемом этим методом, определяют равенство ключей и значений по идентичности ссылок, а не по равенству объектов. Это влияет на поведение методов equals и hashCode этих объектов Map.Entry. Map.Entry e, основанный на равенстве ссылок, равен объекту o тогда и только тогда, когда o является Map.Entry и e.getKey()==o.getKey() && e.getValue()==o.getValue(). Для обеспечения этой семантики equals метод hashCode возвращает System.identityHashCode(e.getKey()) ^ System.identityHashCode(e.getValue()). (Ключи и значения сравниваются по идентичности ссылок, но сами объекты Map.Entry — нет.)

Из-за семантики, основанной на равенстве ссылок, для экземпляров Map.Entry в множестве, возвращаемом этим методом, требования симметричности и транзитивности контракта Object.equals(Object) могут нарушаться, если любую запись множества сравнить с обычной записью карты или если множество, возвращаемое этим методом, сравнить с множеством обычных записей карты (например, возвращаемым вызовом этого метода для обычной карты). Однако соблюдение контракта Object.equals гарантируется для записей карт, основанных на идентичности, и множеств таких записей.

Указан в:
entrySet в интерфейсе Map<K,V>
Возвращает:
представление содержащихся в этой карте сопоставлений по идентичности в виде множества

remove

public boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).

Формально, если в этой карте имеется соответствие от ключа k к значению v такое, что (key == k) и (value == v), этот метод удаляет соответствие для данного ключа и возвращает true; в противном случае он возвращает false.

Указан в:
remove в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
value — значение, которое, как ожидается, связано с указанным ключом
Возвращает:
true, если значение было удалено

replace

public boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если в данный момент ему сопоставлено указанное значение (необязательная операция).

Формально, если в этой карте имеется соответствие от ключа k к значению v такое, что (key == k) и (oldValue == v), этот метод связывает k с newValue и возвращает true; в противном случае он возвращает false.

Указан в:
replace в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
oldValue — значение, которое, как ожидается, связано с указанным ключом
newValue — значение, которое нужно связать с указанным ключом
Возвращает:
true, если значение было заменено

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

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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