Spec-Zone .ru
спецификации, руководства, описания, API
|
K
- тип ключей сохраняется этой картойV
- тип отображенных значенийpublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
Hashtable
, и включает версии методов, соответствующих каждому методу Hashtable. Однако, даже при том, что все операции ориентированы на многопотоковое исполнение, операции извлечения не влекут за собой блокировку, и нет никакой поддержки блокировки всей таблицы в пути, который предотвращает весь доступ. Этот класс является полностью взаимодействующим с Hashtable в программах, которые полагаются на его потокобезопасность, но не на его деталях синхронизации. Операции извлечения (включая get) обычно не блокируют, так может наложиться с операциями обновления (включая put и remove). Извлечения отражают результаты последний раз завершенного содержания операций обновления на их начало. Для совокупных операций, таких как putAll и clear, параллельные извлечения могут отразить вставку или удаление только некоторых записей. Точно так же Iterators и Перечисления возвращают элементы, отражающие состояние хэш-таблицы в некоторый момент в или начиная с создания iterator/enumeration. Они не бросают ConcurrentModificationException
. Однако, iterators разрабатываются, чтобы использоваться только одним потоком за один раз.
Позволенный параллелизм среди операций обновления ведется дополнительным параметром конструктора concurrencyLevel (16 по умолчанию), который используется в качестве подсказки для внутренней калибровки. Таблица внутренне делится, чтобы попытаться разрешить обозначенное число параллельных обновлений без конкуренции. Поскольку размещение в хэш-таблицах чрезвычайно случайно, фактический параллелизм изменится. Идеально, следует выбрать значение, чтобы разместить так много потоков, как будет когда-либо одновременно изменять таблицу. Используя значительно более высокое значение чем Вы нуждаются, может потратить впустую пространство и время, и значительно нижнее значение может вести, чтобы распараллелить конкуренцию. Но переоценки и недооценки в пределах порядка величины обычно не оказывают много значимого влияния. Значение каждый является соответствующим, когда известно, что только один поток изменит, и все другие будут только читать. Кроме того, изменение размеров этого или любого другого вида хэш-таблицы является относительно медленной работой, таким образом, когда возможный, это - хорошая идея обеспечить оценки ожидаемых табличных размеров в конструкторах.
Этот класс и его представления и iterators реализуют все дополнительные методы Map
и Iterator
интерфейсы.
Как Hashtable
но в отличие от этого HashMap
, этот класс не позволяет null использоваться в качестве ключа или значения.
Этот класс является элементом Платформы Наборов 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, toString
public 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
в классе AbstractMap<K,V>
key
- ключ, присваиваемое значение которого должно быть возвращеноnull
если эта карта не содержит отображения для ключаNullPointerException
- если указанный ключ является нулемpublic boolean containsKey(Object key)
containsKey
в интерфейсе Map<K,V>
containsKey
в классе AbstractMap<K,V>
key
- возможный ключNullPointerException
- если указанный ключ является нулемpublic boolean containsValue(Object value)
containsValue
в интерфейсе Map<K,V>
containsValue
в классе AbstractMap<K,V>
value
- оцените, чье присутствие в этой карте должно быть протестированоNullPointerException
- если указанное значение является нулемpublic boolean contains(Object value)
containsValue(java.lang.Object)
, и существует исключительно, чтобы гарантировать полную совместимость классом Hashtable
, который поддерживал этот метод до введения платформы Наборов Java.value
- значение, чтобы искатьNullPointerException
- если указанное значение является нулемpublic V put(K key, V value)
Значение может быть получено, вызывая метод get с ключом, который равен исходному ключу.
put
в интерфейсе Map<K,V>
put
в классе 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>
key
- ключ, с которым должно быть связано указанное значениеvalue
- значение, которое будет связано с указанным ключомNullPointerException
- если указанный ключ или значение являются нулемpublic void putAll(Map<? extends K,? extends V> m)
public V remove(Object key)
remove
в интерфейсе Map<K,V>
remove
в классе AbstractMap<K,V>
key
- ключ, который должен быть удаленNullPointerException
- если указанный ключ является нулемpublic boolean remove(Object key, Object value)
if (map.containsKey(key) && map.get(key).equals(value)) { map.remove(key); return true; } else return false;за исключением того, что действие выполняется атомарно.
remove
в интерфейсе ConcurrentMap<K,V>
key
- ключ, с которым связывается указанное значениеvalue
- значение, которое, как ожидают, будет связано с указанным ключомNullPointerException
- если указанный ключ является нулемpublic boolean replace(K key, V oldValue, V newValue)
if (map.containsKey(key) && map.get(key).equals(oldValue)) { map.put(key, newValue); return true; } else return false;за исключением того, что действие выполняется атомарно.
replace
в интерфейсе ConcurrentMap<K,V>
key
- ключ, с которым связывается указанное значениеoldValue
- значение, которое, как ожидают, будет связано с указанным ключомnewValue
- значение, которое будет связано с указанным ключомNullPointerException
- если каким-либо из параметров является нульpublic V replace(K key, V value)
if (map.containsKey(key)) { return map.put(key, value); } else return null;за исключением того, что действие выполняется атомарно.
replace
в интерфейсе ConcurrentMap<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 и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.