|
Spec-Zone .ru
спецификации, руководства, описания, API
|
K - тип ключей сохраняется этой картойV - тип отображенных значенийpublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
Hashtable, и включает версии методов, соответствующих каждому методу Hashtable. Однако, даже при том, что все операции ориентированы на многопотоковое исполнение, операции извлечения не влекут за собой блокировку, и нет никакой поддержки блокировки всей таблицы в пути, который предотвращает весь доступ. Этот class является полностью взаимодействующим с Hashtable в программах, которые полагаются на его потокобезопасность, но не на его деталях синхронизации. Операции извлечения (включая get) обычно не блокируют, так может наложиться с операциями обновления (включая put и remove). Извлечения отражают результаты последний раз завершенного содержания операций обновления на их начало. Для совокупных операций, таких как putAll и clear, параллельные извлечения могут отразить вставку или удаление только некоторых записей. Точно так же Iterators и Перечисления возвращают элементы, отражающие состояние хэш-таблицы в некоторый момент в или начиная с создания iterator/enumeration. Они не бросают ConcurrentModificationException. Однако, iterators разрабатываются, чтобы использоваться только одним потоком за один раз.
Позволенный параллелизм среди операций обновления ведется дополнительным параметром конструктора concurrencyLevel (значение по умолчанию 16), который используется в качестве подсказки для внутренней калибровки. Таблица внутренне делится, чтобы попытаться разрешить обозначенное число параллельных обновлений без конкуренции. Поскольку размещение в хэш-таблицах чрезвычайно случайно, фактический параллелизм изменится. Идеально, следует выбрать значение, чтобы разместить так много потоков, как будет когда-либо одновременно изменять таблицу. Используя значительно более высокое значение чем Вы нуждаются, может потратить впустую пространство и время, и значительно нижнее значение может вести, чтобы распараллелить конкуренцию. Но переоценки и недооценки в пределах порядка величины обычно не оказывают много значимого влияния. Значение каждый является соответствующим, когда известно, что только один поток изменит, и все другие будут только читать. Кроме того, изменение размеров этого или любого другого вида хэш-таблицы является относительно медленной работой, таким образом, когда возможный, это - хорошая идея обеспечить оценки ожидаемых табличных размеров в конструкторах.
Этот class и его представления и iterators реализуют все дополнительные методы Map и Iterator интерфейсы.
Как Hashtable но в отличие от этого HashMap, этот class не позволяет null использоваться в качестве ключа или значения.
Этот class является элементом Платформы Наборов Java.
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>| Конструктор и Описание |
|---|
ConcurrentHashMap()
Создает новую, пустую карту с емкостью начальной буквы значения по умолчанию (16), коэффициент загрузки (0.75) и concurrencyLevel (16).
|
ConcurrentHashMap(int initialCapacity)
Создает новую, пустую карту с указанной начальной емкостью, и с коэффициентом загрузки значения по умолчанию (0.75) и concurrencyLevel (16).
|
ConcurrentHashMap(int initialCapacity, float loadFactor)
Создает новую, пустую карту с указанной начальной емкостью и коэффициентом загрузки и со значением по умолчанию concurrencyLevel (16).
|
ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
Создает новую, пустую карту с указанной начальной емкостью, коэффициентом загрузки и уровнем параллелизма.
|
ConcurrentHashMap(Map<? extends K,? extends V> m)
Создает новую карту с теми же самыми отображениями как данная карта.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
void |
clear()
Удаляет все отображения из этой карты.
|
boolean |
contains(Object value)
Тестирование метода наследства, если некоторые контурные карты в указанное значение в этой таблице.
|
boolean |
containsKey(Object key)
Тесты, если указанный объект является ключом в этой таблице.
|
boolean |
containsValue(Object value)
true возвратов, если эта карта отображает один или более ключей на указанное значение.
|
Enumeration<V> |
elements()
Возвращает перечисление значений в этой таблице.
|
Set<Map.Entry<K,V>> |
entrySet()
Возвраты a
Set представление отображений содержится в этой карте. |
V |
get(Object key)
Возвращает значение, на которое указанный ключ отображается, или
null если эта карта не содержит отображения для ключа. |
boolean |
isEmpty()
true возвратов, если эта карта не содержит отображений значения ключа.
|
Enumeration<K> |
keys()
Возвращает перечисление ключей в этой таблице.
|
Set<K> |
keySet()
Возвраты a
Set представление ключей содержится в этой карте. |
V |
put(K key, V value)
Отображает указанный ключ на указанное значение в этой таблице.
|
void |
putAll(Map<? extends K,? extends V> m)
Копии все отображения от указанной карты до этого.
|
V |
putIfAbsent(K key, V value)
Если указанный ключ уже не связывается со значением, свяжите его с данным значением.
|
V |
remove(Object key)
Удаляет ключ (и его соответствующее значение) из этой карты.
|
boolean |
remove(Object key, Object value)
Удаляет запись для ключа только если в настоящий момент отображенный на данное значение.
|
V |
replace(K key, V value)
Заменяет запись для ключа только если в настоящий момент отображенный на некоторое значение.
|
boolean |
replace(K key, V oldValue, V newValue)
Заменяет запись для ключа только если в настоящий момент отображенный на данное значение.
|
int |
size()
Возвращает число отображений значения ключа в этой карте.
|
Collection<V> |
values()
Возвраты a
Collection представление значений содержится в этой карте. |
clone, equals, hashCode, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitgetOrDefaultcompute, computeIfAbsent, computeIfPresent, equals, forEach, hashCode, merge, replaceAllpublic ConcurrentHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
initialCapacity - начальная емкость. Реализация выполняет внутреннюю калибровку, чтобы разместить это много элементов.loadFactor - порог коэффициента загрузки, используемый, чтобы управлять изменением размеров. Изменение размеров может быть выполнено, когда среднее число элементов на мусорное ведро превышает этот порог.concurrencyLevel - предполагаемое число параллельного обновления потоков. Реализация выполняет внутреннюю калибровку, чтобы попытаться разместить это много потоков.IllegalArgumentException - если начальная емкость отрицательна или коэффициент загрузки, или concurrencyLevel неположительны.public ConcurrentHashMap(int initialCapacity,
float loadFactor)
initialCapacity - Реализация выполняет внутреннюю калибровку, чтобы разместить это много элементов.loadFactor - порог коэффициента загрузки, используемый, чтобы управлять изменением размеров. Изменение размеров может быть выполнено, когда среднее число элементов на мусорное ведро превышает этот порог.IllegalArgumentException - если начальная емкость элементов отрицательна, или коэффициент загрузки неположителенpublic ConcurrentHashMap(int initialCapacity)
initialCapacity - начальная емкость. Реализация выполняет внутреннюю калибровку, чтобы разместить это много элементов.IllegalArgumentException - если начальная емкость элементов отрицательна.public ConcurrentHashMap()
public ConcurrentHashMap(Map<? extends K,? extends V> m)
m - картаpublic boolean isEmpty()
public int size()
public V get(Object key)
null если эта карта не содержит отображения для ключа. Более формально, если эта карта содержит отображение от ключа k к значению v так, что key.equals(k), тогда этот метод возвраты v; иначе это возвращается null. (Может быть самое большее одно такое отображение.)
get в интерфейсе Map<K,V>get в class AbstractMap<K,V>key - ключ, присваиваемое значение которого должно быть возвращеноnull если эта карта не содержит отображения для ключаNullPointerException - если указанный ключ является нулемpublic boolean containsKey(Object key)
containsKey в интерфейсе Map<K,V>containsKey в class AbstractMap<K,V>key - возможный ключNullPointerException - если указанный ключ является нулемpublic boolean containsValue(Object value)
containsValue в интерфейсе Map<K,V>containsValue в class AbstractMap<K,V>value - оцените, чье присутствие в этой карте должно быть протестированоNullPointerException - если указанное значение является нулемpublic boolean contains(Object value)
containsValue(java.lang.Object), и существует исключительно, чтобы гарантировать полную совместимость class Hashtable, который поддерживал этот метод до введения платформы Наборов Java.value - значение, чтобы искатьNullPointerException - если указанное значение является нулемpublic V put(K key, V value)
Значение может быть получено, вызывая метод get с ключом, который равен исходному ключу.
put в интерфейсе Map<K,V>put в class AbstractMap<K,V>key - ключ, с которым должно быть связано указанное значениеvalue - значение, которое будет связано с указанным ключомNullPointerException - если указанный ключ или значение являются нулемpublic V putIfAbsent(K key, V value)
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key); за исключением того, что действие выполняется атомарно.putIfAbsent в интерфейсе ConcurrentMap<K,V>putIfAbsent в интерфейсе Map<K,V>key - ключ, с которым должно быть связано указанное значениеvalue - значение, которое будет связано с указанным ключомNullPointerException - если указанный ключ или значение являются нулемpublic void putAll(Map<? extends K,? extends V> m)
public V remove(Object key)
remove в интерфейсе Map<K,V>remove в class AbstractMap<K,V>key - ключ, который должен быть удаленNullPointerException - если указанный ключ является нулемpublic boolean remove(Object key, Object value)
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 - если указанный ключ является нулемpublic boolean replace(K key, V oldValue, V newValue)
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 - если каким-либо из параметров является нульpublic V replace(K key, V value)
if (map.containsKey(key)) {
return map.put(key, value);
} else
return null; за исключением того, что действие выполняется атомарно.replace в интерфейсе ConcurrentMap<K,V>replace в интерфейсе Map<K,V>key - ключ, с которым связывается указанное значениеvalue - значение, которое будет связано с указанным ключомNullPointerException - если указанный ключ или значение являются нулемpublic void clear()
public Set<K> keySet()
Set представление ключей содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из этой карты, через Iterator.remove, Set.remove, removeAll, retainAll, и операции clear. Это не поддерживает операции addAll или add. iterator представления "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
public Collection<V> values()
Collection представление значений содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из этой карты, через Iterator.remove, Collection.remove, removeAll, retainAll, и операции clear. Это не поддерживает операции addAll или add. iterator представления "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
public Set<Map.Entry<K,V>> entrySet()
Set представление отображений содержится в этой карте. Набор поддерживается картой, так изменения к карте отражаются в наборе, и наоборот. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из карты, через Iterator.remove, Set.remove, removeAll, retainAll, и операции clear. Это не поддерживает операции addAll или add. iterator представления "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
public Enumeration<K> keys()
keySet()public Enumeration<V> elements()
values()
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92