Spec-Zone.ru › OpenJDK 27

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

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

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

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

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

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

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

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

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

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

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

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

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

Конструктор Описание
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() для каждой пары «ключ — значение» в карте.
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, если подходящих элементов нет.
String toString()
Возвращает строковое представление этой карты.
Collection<V> values()
Возвращает представление значений, содержащихся в этой карте, в виде Collection.

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

clone, isEmpty, size
Модификатор и тип Метод Описание
protected Object clone()
Возвращает поверхностную копию этого экземпляра AbstractMap: сами ключи и значения не клонируются.
boolean isEmpty()
Возвращает true, если эта карта не содержит отображений «ключ — значение».
int size()
Возвращает количество отображений «ключ — значение» в этой карте.

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

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

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

forEach, replaceAll
Модификатор и тип Метод Описание
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи этой карты, пока не будут обработаны все записи или действие не вызовет исключение.
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не вызовет исключение (необязательная операция).

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

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 не являются положительными

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

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()
Возвращает количество соответствий. Этот метод следует использовать вместо AbstractMap.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, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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