|
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, toStringpublic 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 и/или его филиалы. Все права защищены.