Spec-Zone.ru › OpenJDK 8

Класс 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)

Попытка вычислить отображение для указанного ключа и его текущего сопоставленного значения (или 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)

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

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.

void forEach(BiConsumer<? super K,? super V> action)

Выполняет заданное действие для каждой записи в этой карте, пока все записи не будут обработаны или действие не выбросит исключение.

V get(Object key)

Возвращает значение, которому сопоставлен указанный ключ, или null если в этой карте нет отображения для ключа.

V getOrDefault(Object key, V defaultValue)

Возвращает значение, которому сопоставлен указанный ключ, или defaultValue если в этой карте нет отображения для ключа.

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)

Копирует все отображения из указанной карты в эту хеш-таблицу.

V putIfAbsent(K key, V value)

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

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()

Возвращает строковое представление этого объекта Hashtable в виде набора записей, заключенных в фигурные скобки и разделенных символами ASCII ", " (запятая и пробел).

Collection<V> values()

Возвращает представление Collection значений, содержащихся в этой карте.

Методы, унаследованные от класса 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()

Очищает эту таблицу хешей, так что она не содержит ключей.

Задано в:
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()

Возвращает представление 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.

Spec-Zone.ru

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