Spec-Zone.ru › OpenJDK 27

Класс Hashtable<K,V>

java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<K,V>
Параметры типа:
K — тип ключей, хранящихся в этой карте
V — тип сопоставленных значений
Все реализуемые интерфейсы:
Serializable, Cloneable, Map<K,V>
Прямые известные подклассы:
Properties, UIDefaults
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable
Этот класс реализует хеш-таблицу, сопоставляющую ключи значениям. Любой объект, отличный от null, можно использовать в качестве ключа или значения.

Чтобы успешно сохранять объекты в хеш-таблице и получать их из неё, объекты, используемые в качестве ключей, должны реализовывать методы hashCode и equals.

Экземпляр Hashtable имеет два параметра, влияющих на его производительность: начальная ёмкость и коэффициент загрузки. Ёмкость — это число корзин в хеш-таблице, а начальная ёмкость — это ёмкость таблицы при её создании. Обратите внимание, что хеш-таблица является открытой: в случае «коллизии хеширования» одна корзина хранит несколько записей, которые необходимо искать последовательно. Коэффициент загрузки определяет, насколько может заполниться хеш-таблица, прежде чем её ёмкость будет автоматически увеличена. Параметры начальной ёмкости и коэффициента загрузки служат лишь подсказками для реализации. Точные условия, при которых вызывается метод rehash, зависят от реализации.

Как правило, значение коэффициента загрузки по умолчанию (0,75) обеспечивает хороший компромисс между затратами времени и памяти. Более высокие значения сокращают накладные расходы на память, но увеличивают время поиска записи (что отражается на большинстве операций Hashtable, включая get и put).

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

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

В этом примере создаётся хеш-таблица чисел. В качестве ключей используются названия чисел:

  Hashtable<String, Integer> numbers
    = new Hashtable<String, Integer>();
  numbers.put("one", 1);
  numbers.put("two", 2);
  numbers.put("three", 3);

Чтобы получить число, используйте следующий код:

  Integer n = numbers.get("two");
  if (n != null) {
    System.out.println("two = " + n);
  }

Итераторы, возвращаемые методом iterator коллекций, полученных с помощью всех «методов представления коллекций» этого класса, являются fail-fast: если после создания итератора структура Hashtable каким-либо образом изменится, кроме как в результате вызова собственного метода remove этого итератора, итератор выбросит исключение ConcurrentModificationException. Таким образом, при одновременной модификации итератор быстро и корректно завершает работу, не допуская произвольного и недетерминированного поведения в неопределённый момент в будущем. Перечисления, возвращаемые методами Hashtable keys и elements, не являются fail-fast; если после создания перечисления структура Hashtable изменится, результаты перечисления будут неопределёнными.

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

Начиная с платформы Java 2 версии 1.2, этот класс был адаптирован для реализации интерфейса Map, благодаря чему он стал частью Java Collections Framework. В отличие от новых реализаций коллекций, Hashtable синхронизирован. Если потокобезопасная реализация не требуется, рекомендуется использовать HashMap вместо Hashtable. Если требуется высокопроизводительная потокобезопасная реализация, рекомендуется использовать ConcurrentHashMap вместо Hashtable.

С версии:
1.0
См. также:
  • Object.equals(java.lang.Object)
  • Object.hashCode()
  • rehash()
  • Collection
  • Map
  • HashMap
  • TreeMap
  • Сериализованная форма

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

Конструктор Описание
Hashtable()
Создаёт новую пустую хеш-таблицу с начальной ёмкостью по умолчанию (11) и коэффициентом загрузки (0,75).
Hashtable(int initialCapacity)
Создаёт новую пустую хеш-таблицу с указанной начальной ёмкостью и коэффициентом загрузки по умолчанию (0,75).
Hashtable(int initialCapacity, float loadFactor)
Создаёт новую пустую хеш-таблицу с указанными начальной ёмкостью и коэффициентом загрузки.
Hashtable(Map<? extends K, ? extends V> t)
Создаёт новую хеш-таблицу с теми же соответствиями, что и заданная карта.

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

Модификатор и тип Метод Описание
void clear()
Очищает эту хеш-таблицу, удаляя все ключи.
Object clone()
Создаёт поверхностную копию этой хеш-таблицы.
V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить соответствие для указанного ключа и его текущего сопоставленного значения или null, если текущего соответствия нет (необязательная операция).
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу ещё не сопоставлено значение (или ему сопоставлено null), пытается вычислить его значение с помощью заданной функции сопоставления и добавляет его в эту карту, если результат не равен null (необязательная операция).
V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если для указанного ключа имеется ненулевое значение, пытается вычислить новое соответствие на основе ключа и текущего сопоставленного ему значения (необязательная операция).
boolean contains(Object value)
Проверяет, сопоставлен ли какой-либо ключ указанному значению в этой хеш-таблице.
boolean containsKey(Object key)
Проверяет, является ли указанный объект ключом в этой хеш-таблице.
boolean containsValue(Object value)
Возвращает true, если эта хеш-таблица сопоставляет одно или несколько ключей этому значению.
Enumeration<V> elements()
Возвращает перечисление значений в этой хеш-таблице.
Set<Map.Entry<K,V>> entrySet()
Возвращает представление соответствий, содержащихся в этой карте, в виде Set.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство согласно определению интерфейса Map.
V get(Object key)
Возвращает значение, сопоставленное указанному ключу, или null, если в этой карте нет соответствия для данного ключа.
int hashCode()
Возвращает хеш-код этой карты согласно определению интерфейса Map.
boolean isEmpty()
Проверяет, не сопоставлены ли в этой хеш-таблице значениям какие-либо ключи.
Enumeration<K> keys()
Возвращает перечисление ключей этой хеш-таблицы.
Set<K> keySet()
Возвращает представление ключей, содержащихся в этой карте, в виде Set.
V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу ещё не сопоставлено значение или ему сопоставлено null, сопоставляет ему заданное ненулевое значение (необязательная операция).
V put(K key, V value)
Сопоставляет указанный key с указанным value в этой хеш-таблице.
void putAll(Map<? extends K, ? extends V> t)
Копирует все соответствия из указанной карты в эту хеш-таблицу.
protected void rehash()
Увеличивает ёмкость этой хеш-таблицы и внутренне реорганизует её, чтобы эффективнее размещать записи и обращаться к ним.
V remove(Object key)
Удаляет ключ (и соответствующее ему значение) из этой хеш-таблицы.
int size()
Возвращает число ключей в этой хеш-таблице.
String toString()
Возвращает строковое представление объекта Hashtable в виде набора записей, заключённых в фигурные скобки и разделённых символами ASCII « , » (запятая и пробел).
Collection<V> values()
Возвращает представление значений, содержащихся в этой карте, в виде Collection.

Методы, объявленные в классе 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()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.

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

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

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

Hashtable

public Hashtable(int initialCapacity, float loadFactor)
Создает новую пустую хеш-таблицу с указанной начальной емкостью и указанным коэффициентом загрузки.
Параметры:
initialCapacity — начальная емкость хеш-таблицы.
loadFactor — коэффициент загрузки хеш-таблицы.
Исключения:
IllegalArgumentException — если начальная емкость меньше нуля или коэффициент загрузки неположителен.

Hashtable

public Hashtable(int initialCapacity)
Создает новую пустую хеш-таблицу с указанной начальной емкостью и коэффициентом загрузки по умолчанию (0.75).
Параметры:
initialCapacity — начальная емкость хеш-таблицы.
Исключения:
IllegalArgumentException — если начальная емкость меньше нуля.

Hashtable

public Hashtable()
Создает новую пустую хеш-таблицу с начальной емкостью по умолчанию (11) и коэффициентом загрузки по умолчанию (0.75).

Hashtable

public Hashtable(Map<? extends K, ? extends V> t)
Создает новую хеш-таблицу с теми же отображениями, что и заданная Map. Хеш-таблица создается с начальной емкостью, достаточной для хранения отображений из заданной Map, и коэффициентом загрузки по умолчанию (0.75).
Параметры:
t — Map, отображения которой необходимо поместить в эту Map.
Исключения:
NullPointerException — если заданная Map равна null.
Начиная с версии:
1.2

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

size

public int size()
Возвращает количество ключей в этой хеш-таблице.
Определено в:
size в интерфейсе Map<K,V>
Определено в:
size в классе Dictionary<K,V>
Возвращает:
количество ключей в этой хеш-таблице.

isEmpty

public boolean isEmpty()
Проверяет, не сопоставляет ли эта хеш-таблица значениям ни одного ключа.
Определено в:
isEmpty в интерфейсе Map<K,V>
Определено в:
isEmpty в классе Dictionary<K,V>
Возвращает:
true если эта хеш-таблица не сопоставляет значениям ни одного ключа; false в противном случае.

keys

public Enumeration<K> keys()
Возвращает перечисление ключей этой хеш-таблицы. Используйте методы Enumeration для последовательного получения ключей из возвращенного объекта. Если структура хеш-таблицы изменится во время перечисления ключей, результаты перечисления не определены.
Определено в:
keys в классе Dictionary<K,V>
Возвращает:
перечисление ключей этой хеш-таблицы.
См. также:
  • Enumeration
  • elements()
  • keySet()
  • Map

elements

public Enumeration<V> elements()
Возвращает перечисление значений этой хеш-таблицы. Используйте методы Enumeration для последовательного получения элементов из возвращенного объекта. Если структура хеш-таблицы изменится во время перечисления значений, результаты перечисления не определены.
Определено в:
elements в классе Dictionary<K,V>
Возвращает:
перечисление значений этой хеш-таблицы.
См. также:
  • Enumeration
  • keys()
  • values()
  • Map

contains

public boolean contains(Object value)
Проверяет, сопоставлен ли какой-либо ключ указанному значению в этой хеш-таблице. Эта операция выполняется дольше, чем метод containsKey.

Обратите внимание, что этот метод функционально идентичен методу containsValue (который входит в интерфейс Map из Collections Framework).

Параметры:
value — значение, которое нужно найти
Возвращает:
true тогда и только тогда, когда некоторый ключ сопоставлен аргументу value в этой хеш-таблице, согласно методу equals; false в противном случае.
Исключения:
NullPointerException — если значение равно null

containsValue

public boolean containsValue(Object value)
Возвращает true, если этой хеш-таблицей одному или нескольким ключам сопоставлено это значение.

Обратите внимание, что этот метод функционально идентичен методу contains (который появился до интерфейса Map).

Определено в:
containsValue в интерфейсе Map<K,V>
Параметры:
value — значение, наличие которого в этой хеш-таблице нужно проверить
Возвращает:
true если этой Map одному или нескольким ключам сопоставлено указанное значение
Исключения:
NullPointerException — если значение равно null
Начиная с версии:
1.2

containsKey

public boolean containsKey(Object key)
Проверяет, является ли указанный объект ключом в этой хеш-таблице.
Определено в:
containsKey в интерфейсе Map<K,V>
Параметры:
key — возможный ключ
Возвращает:
true тогда и только тогда, когда указанный объект является ключом в этой хеш-таблице, согласно методу equals; false в противном случае.
Исключения:
NullPointerException — если ключ равен null
См. также:
  • contains(Object)

get

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

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

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

rehash

protected void rehash()
Увеличивает емкость и внутренне реорганизует эту хеш-таблицу, чтобы обеспечить более эффективное хранение и получение ее записей. Этот метод вызывается автоматически, когда количество ключей в хеш-таблице превышает ее емкость с учетом коэффициента загрузки.

put

public V put(K key, V value)
Сопоставляет указанный key указанному value в этой хеш-таблице. Ни ключ, ни значение не могут быть null.

Значение можно получить, вызвав метод get с ключом, равным исходному ключу.

Определено в:
put в интерфейсе Map<K,V>
Определено в:
put в классе Dictionary<K,V>
Параметры:
key — ключ хеш-таблицы
value — значение
Возвращает:
предыдущее значение указанного ключа в этой хеш-таблице или null, если такого значения не было
Исключения:
NullPointerException — если ключ или значение равно null
См. также:
  • Object.equals(Object)
  • get(Object)

remove

public V remove(Object key)
Удаляет ключ (и соответствующее ему значение) из этой хеш-таблицы. Если ключа нет в хеш-таблице, этот метод ничего не делает.
Определено в:
remove в интерфейсе Map<K,V>
Определено в:
remove в классе Dictionary<K,V>
Параметры:
key — ключ, который необходимо удалить
Возвращает:
значение, которому был сопоставлен ключ в этой хеш-таблице, или null, если ключу не было сопоставлено значение
Исключения:
NullPointerException — если ключ равен null

putAll

public void putAll(Map<? extends K, ? extends V> t)
Копирует все отображения из указанной Map в эту хеш-таблицу. Эти отображения заменят все отображения, которые имелись в этой хеш-таблице для ключей, присутствующих в указанной Map.
Определено в:
putAll в интерфейсе Map<K,V>
Параметры:
t — отображения, которые необходимо сохранить в этой Map
Исключения:
NullPointerException — если указанная Map равна null
Начиная с версии:
1.2

clear

public void clear()
Очищает эту хеш-таблицу, удаляя из нее все ключи.
Определено в:
clear в интерфейсе Map<K,V>

clone

public Object clone()
Создает поверхностную копию этой хеш-таблицы. Копируется вся структура самой хеш-таблицы, но ключи и значения не клонируются. Эта операция относительно затратна.
Переопределяет:
clone в классе Object
Возвращает:
клон хеш-таблицы
См. также:
  • Cloneable

toString

public String toString()
Возвращает строковое представление этого объекта Hashtable в виде набора записей, заключенного в фигурные скобки и разделенного символами ASCII " , " (запятая и пробел). Каждая запись представлена в виде ключа, знака равенства = и соответствующего элемента; для преобразования ключа и элемента в строки используется метод toString.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой хеш-таблицы

keySet

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

entrySet

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

values

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

equals

public boolean equals(Object o)
Сравнивает указанный Object с этой Map на равенство согласно определению в интерфейсе Map.
Определено в:
equals в интерфейсе Map<K,V>
Переопределяет:
equals в классе Object
Параметры:
o — объект, который нужно сравнить на равенство с этой хеш-таблицей
Возвращает:
true, если указанный Object равен этой Map
Начиная с версии:
1.2
См. также:
  • Map.equals(Object)

hashCode

public int hashCode()
Возвращает значение хеш-кода этой Map согласно определению в интерфейсе Map.
Определено в:
hashCode в интерфейсе Map<K,V>
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода этой Map
Начиная с версии:
1.2
См. также:
  • Map.hashCode()

computeIfAbsent

public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу еще не сопоставлено значение (или ему сопоставлено null), пытается вычислить значение с помощью заданной функции отображения и добавляет его в эту Map, если результат не равен null (необязательная операция).

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

map.computeIfAbsent(key, k -> new Value(f(k)));

Также этот метод можно использовать для реализации Map с несколькими значениями, Map<K,Collection<V>>, поддерживающей несколько значений для одного ключа:

map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);

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

Этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException, если функция отображения изменит эту Map во время вычисления.

Определено в:
computeIfAbsent в интерфейсе Map<K,V>
Параметры:
key — ключ, которому необходимо сопоставить указанное значение
mappingFunction — функция отображения для вычисления значения
Возвращает:
текущее значение, сопоставленное указанному ключу (существующее или вычисленное), либо null, если вычисленное значение равно null
Исключения:
ConcurrentModificationException — если обнаружено, что функция отображения изменила эту Map

computeIfPresent

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

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

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

Этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException, если функция переназначения изменит эту Map во время вычисления.

Определено в:
computeIfPresent в интерфейсе Map<K,V>
Параметры:
key — ключ, которому необходимо сопоставить указанное значение
remappingFunction — функция переназначения для вычисления значения
Возвращает:
новое значение, сопоставленное указанному ключу, или null, если такого значения нет
Исключения:
ConcurrentModificationException — если обнаружено, что функция переназначения изменила эту Map

compute

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

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

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

Этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException, если функция переназначения изменит эту Map во время вычисления.

Определено в:
compute в интерфейсе Map<K,V>
Параметры:
key — ключ, которому необходимо сопоставить указанное значение
remappingFunction — функция переназначения для вычисления значения
Возвращает:
новое значение, сопоставленное указанному ключу, или null, если такого значения нет
Исключения:
ConcurrentModificationException — если обнаружено, что функция переназначения изменила эту Map

merge

public 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 во время вычисления.

Этот метод приложит все усилия, чтобы выбросить ConcurrentModificationException, если функция переназначения изменит эту Map во время вычисления.

Определено в:
merge в интерфейсе Map<K,V>
Параметры:
key — ключ, которому необходимо сопоставить результирующее значение
value — ненулевое значение, которое нужно объединить с существующим значением, сопоставленным ключу, или сопоставить ключу, если существующего значения нет или ему сопоставлено значение null
remappingFunction — функция переназначения для повторного вычисления значения, если оно существует
Возвращает:
новое значение, сопоставленное указанному ключу, или null, если ключу не сопоставлено значение
Исключения:
ConcurrentModificationException — если обнаружено, что функция переназначения изменила эту Map

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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