Spec-Zone.ru › OpenJDK 25

Класс ConcurrentHashMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.concurrent.ConcurrentHashMap<K,V>
Параметры типа:
K — тип ключей, хранящихся в этой карте
V — тип отображаемых значений
Все реализуемые интерфейсы:
Serializable, ConcurrentMap<K,V>, Map<K,V>
public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
Хеш-таблица, поддерживающая полную параллельность операций получения и высокую ожидаемую параллельность операций обновления. Этот класс соответствует той же функциональной спецификации, что и Hashtable, и включает версии методов, соответствующие каждому методу Hashtable. Однако, хотя все операции являются потокобезопасными, операции получения не требуют блокировки, и отсутствует поддержка блокировки всей таблицы таким образом, чтобы предотвратить любой доступ к ней. Этот класс полностью совместим с Hashtable в программах, которые полагаются на его потокобезопасность, но не на особенности его синхронизации.

Операции получения (включая get) обычно не блокируются, поэтому могут выполняться одновременно с операциями обновления (включая put и remove). Результаты получения отражают результаты операций обновления, завершённых к моменту их начала. (Формальнее: операция обновления для заданного ключа находится в отношении happens-before с любым (не null) получением этого ключа, возвращающим обновлённое значение.) Для агрегатных операций, таких как putAll и clear, параллельные операции получения могут отражать добавление или удаление лишь некоторых записей. Аналогично, итераторы, сплитераторы и перечисления возвращают элементы, отражающие состояние хеш-таблицы в некоторый момент времени после создания итератора/перечисления или в момент его создания. Они не выбрасывают исключение ConcurrentModificationException. Однако итераторы предназначены для использования только одним потоком одновременно. Следует учитывать, что результаты агрегатных методов состояния, включая size, isEmpty и containsValue, обычно полезны только тогда, когда карта не подвергается параллельным обновлениям в других потоках. В противном случае результаты этих методов отражают временные состояния, которые могут быть приемлемы для мониторинга или оценки, но не для управления программой.

Размер таблицы динамически увеличивается при слишком большом количестве коллизий (то есть когда ключи с различными хеш-кодами попадают в один и тот же слот по модулю размера таблицы); ожидается, что в среднем при этом будет поддерживаться примерно два сегмента на отображение (что соответствует порогу коэффициента заполнения 0,75 для изменения размера). При добавлении и удалении отображений возможны значительные отклонения от этого среднего значения, но в целом такой подход обеспечивает общепринятый компромисс между временем и пространством для хеш-таблиц. Однако изменение размера этой или любой другой хеш-таблицы может быть относительно медленной операцией. Если возможно, рекомендуется передать оценку размера в качестве необязательного аргумента конструктора initialCapacity. Дополнительный необязательный аргумент конструктора loadFactor позволяет настроить начальную ёмкость таблицы, задавая плотность таблицы, используемую для вычисления объёма памяти, выделяемого для заданного количества элементов. Кроме того, для совместимости с предыдущими версиями этого класса конструкторы могут дополнительно принимать ожидаемое значение concurrencyLevel в качестве подсказки для внутреннего определения размера. Обратите внимание, что использование множества ключей с одинаковым значением hashCode() — надёжный способ снизить производительность любой хеш-таблицы. Чтобы смягчить этот эффект, если ключи реализуют интерфейс Comparable, этот класс может использовать порядок сравнения ключей для разрешения совпадений.

Представление ConcurrentHashMap в виде Set можно создать (с помощью newKeySet() или newKeySet(int)) или получить (с помощью keySet(Object)), если интерес представляют только ключи, а отображаемые значения (возможно, временно) не используются или все имеют одно и то же значение отображения.

ConcurrentHashMap можно использовать в качестве масштабируемой карты частот (разновидности гистограммы или мультимножества), используя значения типа LongAdder и инициализируя их с помощью computeIfAbsent. Например, чтобы увеличить счётчик для ConcurrentHashMap<String,LongAdder> freqs, можно использовать freqs.computeIfAbsent(key, k -> new LongAdder()).increment();

Этот класс, его представления и итераторы реализуют все необязательные методы интерфейсов Map и Iterator.

Как и Hashtable, но в отличие от HashMap, этот класс не позволяет использовать null в качестве ключа или значения.

ConcurrentHashMap поддерживает набор последовательных и параллельных массовых операций, которые, в отличие от большинства методов Stream, предназначены для безопасного и зачастую разумного применения даже к картам, одновременно обновляемым другими потоками; например, при вычислении сводки-снимка значений в общем реестре. Существует три вида операций, каждый из которых имеет четыре формы, принимающие в качестве аргументов и/или возвращающих функций ключи, значения, записи и пары (ключ, значение). Поскольку элементы ConcurrentHashMap не упорядочены определённым образом и могут обрабатываться в разном порядке при разных параллельных выполнениях, корректность предоставляемых функций не должна зависеть от порядка или от других объектов и значений, которые могут временно изменяться во время вычисления; за исключением действий forEach, функции в идеале должны быть без побочных эффектов. Массовые операции над объектами Map.Entry не поддерживают метод setValue.

  • forEach: выполняет заданное действие для каждого элемента. Одна из форм сначала применяет заданное преобразование к каждому элементу, а затем выполняет действие.
  • search: возвращает первый доступный ненулевой результат применения заданной функции к каждому элементу; поиск прекращается после нахождения результата.
  • reduce: объединяет элементы. Функция редукции не должна зависеть от порядка (формальнее: она должна быть одновременно ассоциативной и коммутативной). Существует пять вариантов:
    • Обычная редукция. (Формы этого метода для аргументов-функций (ключ, значение) нет, поскольку соответствующего типа возвращаемого значения не существует.)
    • Редукция с отображением, объединяющая результаты применения заданной функции к каждому элементу.
    • Редукция до скалярных значений типа double, long и int с использованием заданного базового значения.

Эти массовые операции принимают аргумент parallelismThreshold. Методы выполняются последовательно, если предполагаемый текущий размер карты меньше заданного порога. Значение Long.MAX_VALUE отключает параллелизм. Значение 1 обеспечивает максимальный параллелизм, разбивая задачу на достаточное количество подзадач для полной загрузки ForkJoinPool.commonPool(), который используется для всех параллельных вычислений. Обычно сначала выбирают одно из этих крайних значений, а затем измеряют производительность при промежуточных значениях, позволяющих найти компромисс между накладными расходами и пропускной способностью.

Свойства параллелизма массовых операций следуют из свойств ConcurrentHashMap: любой ненулевой результат, возвращаемый get(key) и связанными методами доступа, находится в отношении happens-before с соответствующей вставкой или обновлением. Результат любой массовой операции отражает совокупность этих отношений для отдельных элементов (но не обязательно является атомарным относительно карты в целом, если только достоверно не известно, что карта находится в состоянии покоя). И наоборот, поскольку ключи и значения в карте никогда не равны null, null служит надёжным атомарным признаком отсутствия результата в текущий момент. Для сохранения этого свойства null неявно используется в качестве базового значения для всех операций редукции, не возвращающих скалярный результат. Для вариантов с double, long и int базовое значение должно при объединении с любым другим значением возвращать это другое значение (формальнее, оно должно быть нейтральным элементом редукции). Большинство распространённых операций редукции обладает этими свойствами; например, вычисление суммы с базовым значением 0 или минимума с базовым значением MAX_VALUE.

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

Методы, принимающие и/или возвращающие аргументы Entry, сохраняют связь между ключами и значениями. Они могут быть полезны, например, при поиске ключа с наибольшим значением. Обратите внимание, что обычные аргументы Entry можно передавать с помощью new AbstractMap.SimpleEntry(k,v).

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

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

Все аргументы всех методов задач должны быть не равны null.

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

Начиная с версии:
1.5
См. также:
  • Сериализованная форма

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

Модификатор и тип Класс Описание
static final class  ConcurrentHashMap.KeySetView<K,V>
Представление ConcurrentHashMap в виде Set ключей, в котором добавление элементов может быть включено путём сопоставления им общего значения.

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

AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>

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

Map.Entry<K,V>

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

Конструктор Описание
ConcurrentHashMap()
Создаёт новую пустую карту с размером таблицы по умолчанию (16).
ConcurrentHashMap(int initialCapacity)
Создаёт новую пустую карту с начальным размером таблицы, достаточным для размещения заданного количества элементов без необходимости динамического изменения размера.
ConcurrentHashMap(int initialCapacity, float loadFactor)
Создаёт новую пустую карту с начальным размером таблицы, определяемым заданным количеством элементов (initialCapacity) и начальной плотностью таблицы (loadFactor).
ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
Создаёт новую пустую карту с начальным размером таблицы, определяемым заданным количеством элементов (initialCapacity), начальной плотностью таблицы (loadFactor) и количеством одновременно обновляющих потоков (concurrencyLevel).
ConcurrentHashMap(Map<? extends K, ? extends V> m)
Создаёт новую карту с теми же отображениями, что и заданная карта.

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

Модификатор и тип Метод Описание
void clear()
Удаляет все отображения из этой карты.
V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить отображение для заданного ключа и его текущего отображаемого значения (или null, если текущего отображения нет).
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если заданный ключ ещё не связан со значением, пытается вычислить его с помощью заданной функции отображения и добавляет его в эту карту, если только 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)
Сравнивает заданный объект с этой картой на равенство.
void forEach(long parallelismThreshold, BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой пары (ключ, значение).
<U> void forEach(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждой пары (ключ, значение).
void forEachEntry(long parallelismThreshold, Consumer<? super Map.Entry<K,V>> action)
Выполняет заданное действие для каждой записи.
<U> void forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждой записи.
void forEachKey(long parallelismThreshold, Consumer<? super K> action)
Выполняет заданное действие для каждого ключа.
<U> void forEachKey(long parallelismThreshold, Function<? super K, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждого ключа.
void forEachValue(long parallelismThreshold, Consumer<? super V> action)
Выполняет заданное действие для каждого значения.
<U> void forEachValue(long parallelismThreshold, Function<? super V, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждого значения.
V get(Object key)
Возвращает значение, которому сопоставлен заданный ключ, или null, если в этой карте нет отображения для данного ключа.
V getOrDefault(Object key, V defaultValue)
Возвращает значение, которому сопоставлен заданный ключ, или заданное значение по умолчанию, если в этой карте нет отображения для данного ключа.
int hashCode()
Возвращает хеш-код этой Map, то есть сумму значений key.hashCode() ^ value.hashCode() для каждой пары ключ-значение в карте.
boolean isEmpty()
Возвращает true, если эта карта не содержит отображений ключ-значение.
Enumeration<K> keys()
Возвращает перечисление ключей в этой таблице.
ConcurrentHashMap.KeySetView<K,V> keySet()
Возвращает представление содержащихся в этой карте ключей в виде Set.
ConcurrentHashMap.KeySetView<K,V> keySet(V mappedValue)
Возвращает представление ключей этой карты в виде Set, используя заданное общее отображаемое значение для всех добавляемых элементов (то есть Collection.add(E) и Collection.addAll(Collection)).
long mappingCount()
Возвращает количество отображений.
V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если заданный ключ ещё не связан с (ненулевым) значением, связывает его с заданным значением.
static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet()
Создаёт новый Set, основанный на ConcurrentHashMap и связывающий заданный тип с Boolean.TRUE.
static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet(int initialCapacity)
Создаёт новый Set, основанный на ConcurrentHashMap и связывающий заданный тип с Boolean.TRUE.
V put(K key, V value)
Сопоставляет заданный ключ с заданным значением в этой таблице.
void putAll(Map<? extends K, ? extends V> m)
Копирует все отображения из заданной карты в эту карту.
V putIfAbsent(K key, V value)
Если заданный ключ ещё не связан со значением, связывает его с заданным значением.
<U> U reduce(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат объединения преобразованных заданной функцией всех пар (ключ, значение) с помощью заданной функции редукции или null, если элементов нет.
Map.Entry<K,V> reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>, Map.Entry<K,V>, ? extends Map.Entry<K,V>> reducer)
Возвращает результат объединения всех записей с помощью заданной функции редукции или null, если элементов нет.
<U> U reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат объединения преобразованных заданной функцией всех записей с помощью заданной функции редукции или null, если элементов нет.
double reduceEntriesToDouble(long parallelismThreshold, ToDoubleFunction<Map.Entry<K,V>> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех записей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
int reduceEntriesToInt(long parallelismThreshold, ToIntFunction<Map.Entry<K,V>> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех записей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
long reduceEntriesToLong(long parallelismThreshold, ToLongFunction<Map.Entry<K,V>> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех записей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
K reduceKeys(long parallelismThreshold, BiFunction<? super K, ? super K, ? extends K> reducer)
Возвращает результат объединения всех ключей с помощью заданной функции редукции или null, если элементов нет.
<U> U reduceKeys(long parallelismThreshold, Function<? super K, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат объединения преобразованных заданной функцией всех ключей с помощью заданной функции редукции или null, если элементов нет.
double reduceKeysToDouble(long parallelismThreshold, ToDoubleFunction<? super K> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех ключей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
int reduceKeysToInt(long parallelismThreshold, ToIntFunction<? super K> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех ключей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
long reduceKeysToLong(long parallelismThreshold, ToLongFunction<? super K> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех ключей с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
double reduceToDouble(long parallelismThreshold, ToDoubleBiFunction<? super K, ? super V> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех пар (ключ, значение) с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
int reduceToInt(long parallelismThreshold, ToIntBiFunction<? super K, ? super V> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех пар (ключ, значение) с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
long reduceToLong(long parallelismThreshold, ToLongBiFunction<? super K, ? super V> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех пар (ключ, значение) с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
V reduceValues(long parallelismThreshold, BiFunction<? super V, ? super V, ? extends V> reducer)
Возвращает результат объединения всех значений с помощью заданной функции редукции или null, если элементов нет.
<U> U reduceValues(long parallelismThreshold, Function<? super V, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат объединения преобразованных заданной функцией всех значений с помощью заданной функции редукции или null, если элементов нет.
double reduceValuesToDouble(long parallelismThreshold, ToDoubleFunction<? super V> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех значений с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
int reduceValuesToInt(long parallelismThreshold, ToIntFunction<? super V> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех значений с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
long reduceValuesToLong(long parallelismThreshold, ToLongFunction<? super V> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат объединения преобразованных заданной функцией всех значений с помощью заданной функции редукции, используя заданное базовое значение в качестве нейтрального элемента.
V remove(Object key)
Удаляет ключ (и соответствующее ему значение) из этой карты.
boolean remove(Object key, Object value)
Удаляет запись для ключа, только если в данный момент ему сопоставлено заданное значение.
V replace(K key, V value)
Заменяет запись для ключа, только если в данный момент ему сопоставлено какое-либо значение.
boolean replace(K key, V oldValue, V newValue)
Заменяет запись для ключа, только если в данный момент ему сопоставлено заданное значение.
<U> U search(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждой паре (ключ, значение) или null, если такого результата нет.
<U> U searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждой записи или null, если такого результата нет.
<U> U searchKeys(long parallelismThreshold, Function<? super K, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждому ключу или null, если такого результата нет.
<U> U searchValues(long parallelismThreshold, Function<? super V, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждому значению или null, если такого результата нет.
int size()
Возвращает количество отображений ключ-значение в этой карте.
String toString()
Возвращает строковое представление этой карты.
Collection<V> values()
Возвращает представление содержащихся в этой карте значений в виде Collection.

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

clone, isEmpty, size

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

finalize, getClass, notify, notifyAll, wait, wait, wait

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

forEach, replaceAll

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

ConcurrentHashMap

public ConcurrentHashMap()
Создает новую пустую карту с размером начальной таблицы по умолчанию (16).

ConcurrentHashMap

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

ConcurrentHashMap

public ConcurrentHashMap(Map<? extends K, ? extends V> m)
Создает новую карту с теми же отображениями, что и указанная карта.
Параметры:
m — карта

ConcurrentHashMap

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

ConcurrentHashMap

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

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

size

public int size()
Возвращает число отображений «ключ-значение» в этой карте. Если карта содержит больше Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.
Определено в:
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.equals(k), этот метод возвращает v; в противном случае он возвращает null. (Такое отображение может быть не более чем одно.)

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

containsKey

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

containsValue

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

put

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

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

Определено в:
put в интерфейсе Map<K,V>
Переопределено:
put в классе AbstractMap<K,V>
Параметры:
key — ключ, с которым нужно связать указанное значение
value — значение, которое нужно связать с указанным ключом
Возвращает:
предыдущее значение, связанное с key, или null, если для key не существовало отображения
Исключения:
NullPointerException — если указанный ключ или значение равны null

putAll

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

remove

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

clear

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

keySet

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

Итераторы и сплитераторы этого представления обладают слабой согласованностью.

Метод spliterator этого представления сообщает характеристики Spliterator.CONCURRENT, Spliterator.DISTINCT и Spliterator.NONNULL.

Определено в:
keySet в интерфейсе Map<K,V>
Переопределено:
keySet в классе AbstractMap<K,V>
Возвращает:
представление в виде набора

values

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

Итераторы и сплитераторы этого представления обладают слабой согласованностью.

Метод spliterator этого представления сообщает характеристики Spliterator.CONCURRENT и Spliterator.NONNULL.

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

entrySet

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

Итераторы и сплитераторы этого представления обладают слабой согласованностью.

Метод spliterator этого представления сообщает характеристики Spliterator.CONCURRENT, Spliterator.DISTINCT и Spliterator.NONNULL.

Определено в:
entrySet в интерфейсе Map<K,V>
Возвращает:
представление в виде набора

hashCode

public int hashCode()
Возвращает значение хеш-кода этой Map, то есть сумму значений key.hashCode() ^ value.hashCode() для каждой пары «ключ-значение» в карте.
Определено в:
hashCode в интерфейсе Map<K,V>
Переопределено:
hashCode в классе AbstractMap<K,V>
Возвращает:
значение хеш-кода этой карты
См. также:
  • Map.Entry.hashCode()
  • Object.equals(Object)
  • Set.equals(Object)

toString

public String toString()
Возвращает строковое представление этой карты. Строковое представление состоит из списка отображений «ключ-значение» (в произвольном порядке), заключенного в фигурные скобки («{}»). Соседние отображения разделяются символами ", " (запятая и пробел). Каждое отображение «ключ-значение» представляется как ключ, за которым следует знак равенства («=»), а затем связанное с ним значение.
Переопределено:
toString в классе AbstractMap<K,V>
Возвращает:
строковое представление этой карты

equals

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

putIfAbsent

public V putIfAbsent(K key, V value)
Если с указанным ключом еще не связано значение, связывает его с переданным значением. Для этой map это эквивалентно следующему:
if (!map.containsKey(key))
  return map.put(key, value);
else
  return map.get(key);
, за исключением того, что действие выполняется атомарно.
Определено в:
putIfAbsent в интерфейсе ConcurrentMap<K,V>
Определено в:
putIfAbsent в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым нужно связать указанное значение
value — значение, которое нужно связать с указанным ключом
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не существовало отображения
Исключения:
NullPointerException — если указанный ключ или значение равны null

remove

public boolean remove(Object key, Object value)
Удаляет запись для ключа, только если в данный момент он связан с указанным значением. Для этой map это эквивалентно следующему:
if (map.containsKey(key)
    && Objects.equals(map.get(key), value)) {
  map.remove(key);
  return true;
} else {
  return false;
}
, за исключением того, что действие выполняется атомарно.
Определено в:
remove в интерфейсе ConcurrentMap<K,V>
Определено в:
remove в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
value — значение, которое предположительно связано с указанным ключом
Возвращает:
true, если значение было удалено
Исключения:
NullPointerException — если указанный ключ равен null

replace

public boolean replace(K key, V oldValue, V newValue)
Заменяет запись для ключа, только если в данный момент он связан с указанным значением. Для этой map это эквивалентно следующему:
if (map.containsKey(key)
    && Objects.equals(map.get(key), oldValue)) {
  map.put(key, newValue);
  return true;
} else {
  return false;
}
, за исключением того, что действие выполняется атомарно.
Определено в:
replace в интерфейсе ConcurrentMap<K,V>
Определено в:
replace в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
oldValue — значение, которое предположительно связано с указанным ключом
newValue — значение, которое нужно связать с указанным ключом
Возвращает:
true, если значение было заменено
Исключения:
NullPointerException — если любой из аргументов равен null

replace

public V replace(K key, V value)
Заменяет запись для ключа, только если в данный момент он связан с каким-либо значением. Для этой map это эквивалентно следующему:
if (map.containsKey(key))
  return map.put(key, value);
else
  return null;
, за исключением того, что действие выполняется атомарно.
Определено в:
replace в интерфейсе ConcurrentMap<K,V>
Определено в:
replace в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым связано указанное значение
value — значение, которое нужно связать с указанным ключом
Возвращает:
предыдущее значение, связанное с указанным ключом, или null, если для ключа не существовало отображения
Исключения:
NullPointerException — если указанный ключ или значение равны null

getOrDefault

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

computeIfAbsent

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

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

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

computeIfPresent

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

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

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

compute

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

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

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

merge

public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если с указанным ключом еще не связано (ненулевое) значение, связывает его с переданным значением. В противном случае заменяет значение результатом заданной функции переназначения или удаляет его, если null. Вызов метода целиком выполняется атомарно. Некоторые операции обновления этой карты, выполняемые другими потоками, могут блокироваться на время вычисления, поэтому вычисление должно быть коротким и простым и не должно пытаться обновлять другие отображения этой карты.
Определено в:
merge в интерфейсе ConcurrentMap<K,V>
Определено в:
merge в интерфейсе Map<K,V>
Параметры:
key — ключ, с которым нужно связать указанное значение
value — значение, используемое при отсутствии отображения
remappingFunction — функция для повторного вычисления значения, если оно существует
Возвращает:
новое значение, связанное с указанным ключом, или null, если его нет
Исключения:
NullPointerException — если указанный ключ или remappingFunction равны null
RuntimeException — или Error, если это делает remappingFunction; в этом случае отображение остается неизменным

contains

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

Обратите внимание, что этот метод функционально идентичен методу containsValue(Object) и существует исключительно для обеспечения полной совместимости с классом Hashtable, который поддерживал этот метод до появления Java Collections Framework.

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

keys

public Enumeration<K> keys()
Возвращает перечисление ключей этой таблицы.
Возвращает:
перечисление ключей этой таблицы
См. также:
  • keySet()

elements

public Enumeration<V> elements()
Возвращает перечисление значений этой таблицы.
Возвращает:
перечисление значений этой таблицы
См. также:
  • values()

mappingCount

public long mappingCount()
Возвращает число отображений. Этот метод следует использовать вместо size(), поскольку ConcurrentHashMap может содержать больше отображений, чем можно представить типом int. Возвращаемое значение является оценочным; фактическое число может отличаться при наличии одновременных вставок или удалений.
Возвращает:
число отображений
Начиная с версии:
1.8

newKeySet

public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet()
Создает новый Set, основанный на ConcurrentHashMap, сопоставляющей указанный тип с Boolean.TRUE.
Параметры типа:
K — тип элементов возвращаемого множества
Возвращает:
новое множество
Начиная с:
1.8

newKeySet

public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet(int initialCapacity)
Создает новый Set, основанный на ConcurrentHashMap, сопоставляющей указанный тип с Boolean.TRUE.
Параметры типа:
K — тип элементов возвращаемого множества
Параметры:
initialCapacity — реализация выполняет внутреннее выделение памяти для размещения указанного количества элементов.
Возвращает:
новое множество
Выбрасывает:
IllegalArgumentException — если начальная емкость для элементов отрицательна
Начиная с:
1.8

keySet

public ConcurrentHashMap.KeySetView<K,V> keySet(V mappedValue)
Возвращает представление ключей этой карты в виде Set, используя заданное общее значение для сопоставления при добавлении элементов (то есть Collection.add(E) и Collection.addAll(Collection)). Это, разумеется, уместно только в том случае, если для всех элементов, добавляемых через это представление, допустимо использовать одно и то же значение.
Параметры:
mappedValue — значение сопоставления, используемое при добавлении элементов
Возвращает:
представление множества
Выбрасывает:
NullPointerException — если mappedValue равен null

forEach

public void forEach(long parallelismThreshold, BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой пары (ключ, значение).
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
action — действие
Начиная с:
1.8

forEach

public <U> void forEach(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждой пары (ключ, значение).
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае действие не выполняется)
action — действие
Начиная с:
1.8

search

public <U> U search(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждой паре (ключ, значение) или null, если такого результата нет. После успешного поиска дальнейшая обработка элементов прекращается, а результаты любых других параллельных вызовов функции поиска игнорируются.
Параметры типа:
U — тип возвращаемого значения функции поиска
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
searchFunction — функция, возвращающая ненулевой результат в случае успеха и null в противном случае
Возвращает:
ненулевой результат применения заданной функции поиска к каждой паре (ключ, значение) или null, если такого результата нет
Начиная с:
1.8

reduce

public <U> U reduce(long parallelismThreshold, BiFunction<? super K, ? super V, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат накопления заданных преобразований всех пар (ключ, значение) с помощью заданной функции редукции, объединяющей значения, или null, если пар нет.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае элемент не объединяется)
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех пар (ключ, значение)
Начиная с:
1.8

reduceToDouble

public double reduceToDouble(long parallelismThreshold, ToDoubleBiFunction<? super K, ? super V> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех пар (ключ, значение) с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех пар (ключ, значение)
Начиная с:
1.8

reduceToLong

public long reduceToLong(long parallelismThreshold, ToLongBiFunction<? super K, ? super V> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех пар (ключ, значение) с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех пар (ключ, значение)
Начиная с:
1.8

reduceToInt

public int reduceToInt(long parallelismThreshold, ToIntBiFunction<? super K, ? super V> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех пар (ключ, значение) с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех пар (ключ, значение)
Начиная с:
1.8

forEachKey

public void forEachKey(long parallelismThreshold, Consumer<? super K> action)
Выполняет заданное действие для каждого ключа.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
action — действие
Начиная с:
1.8

forEachKey

public <U> void forEachKey(long parallelismThreshold, Function<? super K, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждого ключа.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае действие не выполняется)
action — действие
Начиная с:
1.8

searchKeys

public <U> U searchKeys(long parallelismThreshold, Function<? super K, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждому ключу или null, если такого результата нет. После успешного поиска дальнейшая обработка элементов прекращается, а результаты любых других параллельных вызовов функции поиска игнорируются.
Параметры типа:
U — тип возвращаемого значения функции поиска
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
searchFunction — функция, возвращающая ненулевой результат в случае успеха и null в противном случае
Возвращает:
ненулевой результат применения заданной функции поиска к каждому ключу или null, если такого результата нет
Начиная с:
1.8

reduceKeys

public K reduceKeys(long parallelismThreshold, BiFunction<? super K, ? super K, ? extends K> reducer)
Возвращает результат накопления всех ключей с помощью заданной функции редукции, объединяющей значения, или null, если ключей нет.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления всех ключей с помощью заданной функции редукции, объединяющей значения, или null, если ключей нет
Начиная с:
1.8

reduceKeys

public <U> U reduceKeys(long parallelismThreshold, Function<? super K, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат накопления заданных преобразований всех ключей с помощью заданной функции редукции, объединяющей значения, или null, если ключей нет.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае элемент не объединяется)
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех ключей
Начиная с:
1.8

reduceKeysToDouble

public double reduceKeysToDouble(long parallelismThreshold, ToDoubleFunction<? super K> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех ключей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех ключей
Начиная с:
1.8

reduceKeysToLong

public long reduceKeysToLong(long parallelismThreshold, ToLongFunction<? super K> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех ключей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех ключей
Начиная с:
1.8

reduceKeysToInt

public int reduceKeysToInt(long parallelismThreshold, ToIntFunction<? super K> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех ключей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех ключей
Начиная с:
1.8

forEachValue

public void forEachValue(long parallelismThreshold, Consumer<? super V> action)
Выполняет заданное действие для каждого значения.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
action — действие
Начиная с:
1.8

forEachValue

public <U> void forEachValue(long parallelismThreshold, Function<? super V, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждого значения.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае действие не выполняется)
action — действие
Начиная с:
1.8

searchValues

public <U> U searchValues(long parallelismThreshold, Function<? super V, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждому значению или null, если такого результата нет. После успешного поиска дальнейшая обработка элементов прекращается, а результаты любых других параллельных вызовов функции поиска игнорируются.
Параметры типа:
U — тип возвращаемого значения функции поиска
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
searchFunction — функция, возвращающая ненулевой результат в случае успеха и null в противном случае
Возвращает:
ненулевой результат применения заданной функции поиска к каждому значению или null, если такого результата нет
Начиная с:
1.8

reduceValues

public V reduceValues(long parallelismThreshold, BiFunction<? super V, ? super V, ? extends V> reducer)
Возвращает результат накопления всех значений с помощью заданной функции редукции, объединяющей значения, или null, если значений нет.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления всех значений
Начиная с:
1.8

reduceValues

public <U> U reduceValues(long parallelismThreshold, Function<? super V, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат накопления заданных преобразований всех значений с помощью заданной функции редукции, объединяющей значения, или null, если значений нет.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае элемент не объединяется)
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех значений
Начиная с:
1.8

reduceValuesToDouble

public double reduceValuesToDouble(long parallelismThreshold, ToDoubleFunction<? super V> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех значений с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех значений
Начиная с:
1.8

reduceValuesToLong

public long reduceValuesToLong(long parallelismThreshold, ToLongFunction<? super V> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех значений с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех значений
Начиная с:
1.8

reduceValuesToInt

public int reduceValuesToInt(long parallelismThreshold, ToIntFunction<? super V> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех значений с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех значений
Начиная с:
1.8

forEachEntry

public void forEachEntry(long parallelismThreshold, Consumer<? super Map.Entry<K,V>> action)
Выполняет заданное действие для каждой записи.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
action — действие
Начиная с:
1.8

forEachEntry

public <U> void forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> transformer, Consumer<? super U> action)
Выполняет заданное действие для каждого ненулевого результата преобразования каждой записи.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае действие не выполняется)
action — действие
Начиная с:
1.8

searchEntries

public <U> U searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> searchFunction)
Возвращает ненулевой результат применения заданной функции поиска к каждой записи или null, если такого результата нет. После успешного поиска дальнейшая обработка элементов прекращается, а результаты любых других параллельных вызовов функции поиска игнорируются.
Параметры типа:
U — тип возвращаемого значения функции поиска
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
searchFunction — функция, возвращающая ненулевой результат в случае успеха и null в противном случае
Возвращает:
ненулевой результат применения заданной функции поиска к каждой записи или null, если такого результата нет
Начиная с:
1.8

reduceEntries

public Map.Entry<K,V> reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>, Map.Entry<K,V>, ? extends Map.Entry<K,V>> reducer)
Возвращает результат накопления всех записей с помощью заданной функции редукции, объединяющей значения, или null, если записей нет.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления всех записей
Начиная с:
1.8

reduceEntries

public <U> U reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>, ? extends U> transformer, BiFunction<? super U, ? super U, ? extends U> reducer)
Возвращает результат накопления заданных преобразований всех записей с помощью заданной функции редукции, объединяющей значения, или null, если записей нет.
Параметры типа:
U — тип возвращаемого значения преобразователя
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента или null, если преобразование отсутствует (в этом случае элемент не объединяется)
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех записей
Начиная с:
1.8

reduceEntriesToDouble

public double reduceEntriesToDouble(long parallelismThreshold, ToDoubleFunction<Map.Entry<K,V>> transformer, double basis, DoubleBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех записей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех записей
Начиная с:
1.8

reduceEntriesToLong

public long reduceEntriesToLong(long parallelismThreshold, ToLongFunction<Map.Entry<K,V>> transformer, long basis, LongBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех записей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех записей
Начиная с:
1.8

reduceEntriesToInt

public int reduceEntriesToInt(long parallelismThreshold, ToIntFunction<Map.Entry<K,V>> transformer, int basis, IntBinaryOperator reducer)
Возвращает результат накопления заданных преобразований всех записей с помощью заданной функции редукции, объединяющей значения, используя заданную начальную величину в качестве нейтрального элемента.
Параметры:
parallelismThreshold — (предполагаемое) количество элементов, необходимое для параллельного выполнения этой операции
transformer — функция, возвращающая результат преобразования элемента
basis — нейтральный элемент (начальное значение по умолчанию) для редукции
reducer — коммутативная ассоциативная функция объединения
Возвращает:
результат накопления заданных преобразований всех записей
Начиная с:
1.8

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/ConcurrentHashMap.html

Spec-Zone.ru

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