Класс Hashtable<K,V>
- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<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 имеет два параметра, которые влияют на его производительность: начальный размер и коэффициент заполнения. Размер — это количество корзин в хеш-таблице, а начальный размер — это просто размер в момент создания хеш-таблицы. Обратите внимание, что хеш-таблица является открытой: в случае «коллизии хешей» одна корзина хранит несколько записей, которые необходимо последовательно просматривать. Коэффициент заполнения — это мера того, насколько хеш-таблица может быть заполнена перед автоматическим увеличением ее размера. Параметры начального размера и коэффициента заполнения являются лишь подсказками для реализации. Точные детали о том, когда и будет ли вызываться метод перехеширования, зависят от реализации.
Обычно, значение по умолчанию для коэффициента заполнения (.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 методов отображения коллекции всех методов представления коллекции этого класса, являются быстродействующими: если хеш-таблица структурно изменяется в любой момент после создания итератора, каким-либо способом, кроме собственного метода итератора remove, итератор выбросит исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и чисто завершается, а не рискует произвести произвольное и непредсказуемое поведение в неопределенное время в будущем. Перечисления, возвращаемые методами ключей и элементов хеш-таблицы, не являются быстродействующими.
Обратите внимание, что быстродействие итератора не гарантируется, так как, как правило, невозможно гарантировать какие-либо ограничения при одновременном изменении без синхронизации. Быстродействующие итераторы выбрасывают ConcurrentModificationException в виде наилучшего результата. Поэтому неправильно писать программу, которая зависела бы от этого исключения для ее корректности: быстродействие итераторов должно использоваться только для обнаружения ошибок.
Начиная с платформы Java 2 v1.2, этот класс был переработан для реализации интерфейса Map, что делает его членом Фреймворка Java Collections. В отличие от новых реализаций коллекций, Hashtable синхронизирован. Если реализация, безопасная для потоков, не требуется, рекомендуется использовать HashMap вместо Hashtable. Если требуется реализация, безопасная для высококонкурентных потоков, рекомендуется использовать ConcurrentHashMap вместо Hashtable.
- С:
- JDK1.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) Создаёт новую хеш-таблицу с теми же отображениями, что и у заданной Map. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
clear() Очищает эту хеш-таблицу, чтобы она не содержала ключей. |
Object |
clone() Создаёт поверхностную копию этой хеш-таблицы. |
V |
compute(K key,
BiFunction<? super K,? super V,? extends V> remappingFunction) Попытка вычислить отображение для указанного ключа и его текущего сопоставленного значения (или |
V |
computeIfAbsent(K key,
Function<? super K,? extends V> mappingFunction) Если указанный ключ ещё не связан со значением (или сопоставлен с |
V |
computeIfPresent(K key,
BiFunction<? super K,? super V,? extends V> remappingFunction) Если значение для указанного ключа присутствует и не null, пытается вычислить новое отображение, используя ключ и его текущее сопоставленное значение. |
boolean |
contains(Object value) Проверяет, отображает ли какой-либо ключ в указанное значение в этой хеш-таблице. |
boolean |
containsKey(Object key) Проверяет, является ли указанный объект ключом в этой хеш-таблице. |
boolean |
containsValue(Object value) Возвращает true, если эта хеш-таблица отображает один или несколько ключей в это значение. |
Enumeration<V> |
elements() Возвращает перечисление значений в этой хеш-таблице. |
Set<Map.Entry<K,V>> |
entrySet() Возвращает представление |
boolean |
equals(Object o) Сравнивает указанный объект с этой картой на равенство в соответствии с определением в интерфейсе Map. |
void |
forEach(BiConsumer<? super K,? super V> action) Выполняет заданное действие для каждой записи в этой карте, пока все записи не будут обработаны или действие не выбросит исключение. |
V |
get(Object key) Возвращает значение, которому сопоставлен указанный ключ, или |
V |
getOrDefault(Object key,
V defaultValue) Возвращает значение, которому сопоставлен указанный ключ, или |
int |
hashCode() Возвращает хеш-код для этой карты в соответствии с определением в интерфейсе Map. |
boolean |
isEmpty() Проверяет, отображает ли эта хеш-таблица ни одного ключа к значениям. |
Enumeration<K> |
keys() Возвращает перечисление ключей в этой хеш-таблице. |
Set<K> |
keySet() Возвращает представление |
V |
merge(K key,
V value,
BiFunction<? super V,? super V,? extends V> remappingFunction) Если указанный ключ ещё не связан со значением или связан с null, связывает его с заданным ненулевым значением. |
V |
put(K key,
V value) Сопоставляет указанный |
void |
putAll(Map<? extends K,? extends V> t) Копирует все отображения из указанной карты в эту хеш-таблицу. |
V |
putIfAbsent(K key,
V value) Если указанный ключ ещё не связан со значением (или сопоставлен с |
protected void |
rehash() Увеличивает ёмкость и внутренне переупорядочивает эту хеш-таблицу, чтобы более эффективно размещать и обращаться к её записям. |
V |
remove(Object key) Удаляет ключ (и соответствующее значение) из этой хеш-таблицы. |
boolean |
remove(Object key,
Object value) Удаляет запись для указанного ключа только в том случае, если он в данный момент отображён на указанное значение. |
V |
replace(K key,
V value) Заменяет запись для указанного ключа только в том случае, если он в данный момент отображён на какое-либо значение. |
boolean |
replace(K key,
V oldValue,
V newValue) Заменяет запись для указанного ключа только в том случае, если он в данный момент отображён на указанное значение. |
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function) Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока все записи не будут обработаны или функция не выбросит исключение. |
int |
size() Возвращает количество ключей в этой хеш-таблице. |
String |
toString() Возвращает строковое представление этого объекта |
Collection<V> |
values() Возвращает представление |
Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
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)
Создаёт новую таблицу хешей с теми же сопоставлениями, что и в заданном отображении. Таблица хешей создаётся с начальной ёмкостью, достаточной для хранения сопоставлений в данном отображении, и значением коэффициента заполнения по умолчанию (0.75).
- Параметры:
-
t- отображение, сопоставления которого должны быть помещены в это отображение. - Исключения:
-
NullPointerException- если указанное отображение равно 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()
Возвращает перечисление ключей в этой таблице хешей.
- Задано в:
-
keysв классеDictionary<K,V> - Возвращает:
- перечисление ключей в этой таблице хешей.
- См. также:
-
Enumeration,elements(),keySet(),Map
elements
public Enumeration<V> elements()
Возвращает перечисление значений в этой таблице хешей. Используйте методы перечисления на возвращённом объекте, чтобы последовательно извлечь элементы.
- Задано в:
-
elementsв классеDictionary<K,V> - Возвращает:
- перечисление значений в этой таблице хешей.
- См. также:
-
Enumeration,keys(),values(),Map
contains
public boolean contains(Object value)
Проверяет, отображает ли какой-либо ключ на указанное значение в этой таблице хешей. Эта операция дороже, чем метод containsKey.
Обратите внимание, что этот метод идентичен по функциональности методу containsValue (который является частью интерфейса Map в рамках набора коллекций).
- Параметры:
-
value- значение для поиска - Возвращает:
-
trueтогда и только тогда, когда какой-либо ключ отображается на аргументvalue, в этой таблице хешей, как определено методомequals;falseв противном случае. - Исключения:
-
NullPointerException- если значение равноnull
containsValue
public boolean containsValue(Object value)
Возвращает true, если эта таблица хешей отображает один или несколько ключей на это значение.
Обратите внимание, что этот метод идентичен по функциональности методу contains (который предшествовал интерфейсу Map).
- Задано в:
-
containsValueв интерфейсеMap<K,V> - Параметры:
-
value- значение, присутствие которого в этой таблице хешей должно быть проверено - Возвращает:
-
trueесли это отображение отображает один или несколько ключей на указанное значение - Исключения:
-
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 если это отображение не содержит сопоставления для ключа.
Более формально, если это отображение содержит сопоставление от ключа k до значения v, такое что (key.equals(k)), тогда этот метод возвращает v; в противном случае он возвращает null. (Может быть не более одного такого отображения.)
- Задано в:
-
getв интерфейсеMap<K,V> - Задано в:
-
getв классеDictionary<K,V> - Параметры:
-
key- ключ, связанное значение которого нужно вернуть - Возвращает:
- значение, которому сопоставлен указанный ключ, или
nullесли это отображение не содержит сопоставления для ключа - Исключения:
-
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)
Копирует все сопоставления из указанного отображения в эту таблицу хешей. Эти сопоставления заменят любые сопоставления, которые у этой таблицы хешей были для любых ключей, которые в данный момент находятся в указанном отображении.
- Задано в:
-
putAllв интерфейсеMap<K,V> - Параметры:
-
t- отображения, которые нужно сохранить в этом отображении - Исключения:
-
NullPointerException- если указанное отображение равно null - С момента:
- 1.2
clear
public void clear()
Очищает эту таблицу хешей, так что она не содержит ключей.
clone
public Object clone()
Создаёт поверхностную копию этой таблицы хешей. Копируется вся структура самой таблицы хешей, но ключи и значения не клонируются. Это относительно дорогостоящая операция.
toString
public String toString()
Возвращает строковое представление этого объекта Hashtable в виде набора записей, заключённых в фигурные скобки и разделенных ASCII-символами ", " (запятая и пробел). Каждая запись представляется как ключ, знак равенства =, и соответствующий элемент, где используется метод toString для преобразования ключа и элемента в строки.
keySet
public Set<K> keySet()
Возвращает представление Set ключей, содержащихся в этом отображении. Множество основано на отображении, поэтому изменения в отображении отражаются в множестве и наоборот. Если отображение изменяется во время итерации по множеству (кроме операции remove самого итератора), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из отображения, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Оно не поддерживает операции add или addAll.
- Указано в:
-
keySetв интерфейсеMap<K,V> - Возвращает:
- представление множества ключей, содержащихся в этом отображении
- С версии:
- 1.2
entrySet
public Set<Map.Entry<K,V>> entrySet()
Возвращает представление Set отображений, содержащихся в этом отображении. Множество основано на отображении, поэтому изменения в отображении отражаются в множестве и наоборот. Если отображение изменяется во время итерации по множеству (кроме операции remove самого итератора или операции setValue над элементом отображения, возвращаемым итератором), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из отображения, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Оно не поддерживает операции add или addAll.
- Указано в:
-
entrySetв интерфейсеMap<K,V> - Возвращает:
- представление множества отображений, содержащихся в этом отображении
- С версии:
- 1.2
values
public Collection<V> values()
Возвращает представление Collection значений, содержащихся в этом отображении. Коллекция основана на отображении, поэтому изменения в отображении отражаются в коллекции и наоборот. Если отображение изменяется во время итерации по коллекции (кроме операции remove самого итератора), результаты итерации не определены. Коллекция поддерживает удаление элементов, которое удаляет соответствующее отображение из отображения, с помощью операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Она не поддерживает операции add или addAll.
- Указано в:
-
valuesв интерфейсеMap<K,V> - Возвращает:
- представление коллекции значений, содержащихся в этом отображении
- С версии:
- 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 - Возвращает:
- значение хэш-кода для этого объекта.
- С версии:
- 1.2
- См. также:
Map.hashCode()
getOrDefault
public V getOrDefault(Object key,
V defaultValue) Описание скопировано из интерфейса: Map
Возвращает значение, которому соответствует указанный ключ, или defaultValue, если это отображение не содержит сопоставления для ключа.
- Указано в:
-
getOrDefaultв интерфейсеMap<K,V> - Параметры:
-
key- ключ, связанное значение которого должно быть возвращено -
defaultValue- отображение по умолчанию для ключа - Возвращает:
- значение, которому соответствует указанный ключ, или
defaultValue, если это отображение не содержит сопоставления для ключа
forEach
public void forEach(BiConsumer<? super K,? super V> action)
Описание скопировано из интерфейса: Map
Выполняет заданное действие для каждой записи в этом отображении, пока все записи не будут обработаны или действие не вызовет исключение. Если реализующим классом не указано иное, действия выполняются в порядке итерации множества записей (если указан порядок итерации). Исключения, выброшенные действием, передаются вызывающей стороне.
- Указано в:
-
forEachв интерфейсеMap<K,V> - Параметры:
-
action- действие, которое должно быть выполнено для каждой записи
replaceAll
public void replaceAll(BiFunction<? super K,? super V,? extends V> function)
Описание скопировано из интерфейса: Map
Заменяет значение каждой записи результатом вызова данной функции для этой записи, пока все записи не будут обработаны или функция не вызовет исключение. Исключения, выброшенные функцией, передаются вызывающей стороне.
- Указано в:
-
replaceAllв интерфейсеMap<K,V> - Параметры:
-
function- функция, которую нужно применить к каждой записи
putIfAbsent
public V putIfAbsent(K key,
V value) Описание скопировано из интерфейса: Map
Если указанный ключ еще не связан со значением (или сопоставлен с null) связывает его с заданным значением и возвращает null, иначе возвращает текущее значение.
- Указано в:
-
putIfAbsentв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым должно быть связано указанное значение -
value- значение, которое должно быть связано с указанным ключом - Возвращает:
- предыдущее значение, связанное с указанным ключом, или
null, если для ключа не было сопоставления. (Возвращениеnullтакже может указывать на то, что отображение ранее связывалоnullс ключом, если реализация поддерживает значения null.)
remove
public boolean remove(Object key,
Object value) Описание скопировано из интерфейса: Map
Удаляет запись для указанного ключа только в том случае, если он в настоящее время сопоставлен с указанным значением.
- Указано в:
-
removeв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым связано указанное значение -
value- значение, которое ожидается, что будет связано с указанным ключом - Возвращает:
-
trueесли значение было удалено
replace
public boolean replace(K key,
V oldValue,
V newValue) Описание скопировано из интерфейса: Map
Заменяет запись для указанного ключа только в том случае, если он в настоящее время сопоставлен с указанным значением.
- Указано в:
-
replaceв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым связано указанное значение -
oldValue- значение, которое ожидается, что будет связано с указанным ключом -
newValue- значение, которое должно быть связано с указанным ключом - Возвращает:
-
trueесли значение было заменено
replace
public V replace(K key,
V value) Описание скопировано из интерфейса: Map
Заменяет запись для указанного ключа только в том случае, если он в настоящее время сопоставлен с каким-либо значением.
- Указано в:
-
replaceв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым связано указанное значение -
value- значение, которое должно быть связано с указанным ключом - Возвращает:
- предыдущее значение, связанное с указанным ключом, или
null, если для ключа не было сопоставления. (Возвращениеnullтакже может указывать на то, что отображение ранее связывалоnullс ключом, если реализация поддерживает значения null.)
computeIfAbsent
public V computeIfAbsent(K key,
Function<? super K,? extends V> mappingFunction) Описание скопировано из интерфейса: Map
Если указанный ключ еще не связан со значением (или сопоставлен с null), пытается вычислить его значение с помощью данной функции сопоставления и вводит его в это отображение, если только null.
Если функция возвращает null, сопоставление не записывается. Если сама функция вызывает (непроверенное) исключение, исключение повторно вызывается, и сопоставление не записывается. Наиболее распространенное использование - это создание нового объекта, служащего начальным сопоставленным значением или результатом мемоизации, как в:
map.computeIfAbsent(key, k -> new Value(f(k)));
Или для реализации многозначного отображения, Map<K,Collection<V>>, поддерживающего несколько значений на ключ:
map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);
- Указано в:
-
computeIfAbsentв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым должно быть связано указанное значение -
mappingFunction- функция для вычисления значения - Возвращает:
- текущее (существующее или вычисленное) значение, связанное с указанным ключом, или null, если вычисленное значение равно null
computeIfPresent
public V computeIfPresent(K key,
BiFunction<? super K,? super V,? extends V> remappingFunction) Описание скопировано из интерфейса: Map
Если значение для указанного ключа присутствует и не равно null, пытается вычислить новое сопоставление, учитывая ключ и его текущее сопоставленное значение.
Если функция возвращает null, сопоставление удаляется. Если сама функция вызывает (непроверенное) исключение, исключение повторно вызывается, и текущее сопоставление остается неизменным.
- Указано в:
-
computeIfPresentв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым должно быть связано указанное значение -
remappingFunction- функция для вычисления значения - Возвращает:
- новое значение, связанное с указанным ключом, или null, если нет
compute
public V compute(K key,
BiFunction<? super K,? super V,? extends V> remappingFunction) Описание скопировано из интерфейса: Map
Попытка вычислить отображение для указанного ключа и его текущего сопоставленного значения (или null если нет текущего отображения). Например, чтобы создать или добавить String сообщение к сопоставленному значению:
map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))(Метод
merge() зачастую проще использовать для таких целей.)
Если функция возвращает null, отображение удаляется (или остается отсутствующим, если изначально отсутствовало). Если сама функция вызывает (непроверенное) исключение, исключение перебрасывается, а текущее отображение остается неизменным.
- Указано в:
-
computeв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым должно быть связано указанное значение -
remappingFunction- функция для вычисления значения - Возвращает:
- новое значение, связанное с указанным ключом, или null, если нет
merge
public V merge(K key,
V value,
BiFunction<? super V,? super V,? extends V> remappingFunction) Описание скопировано из интерфейса: Map
Если указанный ключ еще не связан со значением или связан с null, связывает его с заданным ненулевым значением. В противном случае, заменяет связанное значение результатом заданной функции переопределения, или удаляет, если результат null. Этот метод может быть полезен при объединении нескольких сопоставленных значений для одного ключа. Например, чтобы создать или добавить String msg к сопоставленному значению:
map.merge(key, msg, String::concat)
Если функция возвращает null, отображение удаляется. Если сама функция вызывает (непроверенное) исключение, исключение перебрасывается, а текущее отображение остается неизменным.
- Указано в:
-
mergeв интерфейсеMap<K,V> - Параметры:
-
key- ключ, с которым будет связано результирующее значение -
value- ненулевое значение, которое будет объединено с существующим значением, связанным с ключом, или, если нет существующего значения или значение null связано с ключом, будет связано с ключом -
remappingFunction- функция для повторного вычисления значения, если оно присутствует - Возвращает:
- новое значение, связанное с указанным ключом, или null, если нет сопоставленного значения
© 1993, 2020, 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.