|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractMap<K,V> java.util.concurrent.ConcurrentHashMap<K,V>
K
- このマップで保持されるキーの型V
- マップされる値の型public class ConcurrentHashMap<K,V>
取得の完全な同時性および予想される調整可能な更新平行性をサポートするハッシュテーブルです。このクラスは、Hashtable
と同じ機能仕様に従い、Hashtable の各メソッドに対応するバージョンのメソッドを含みます。ただし、すべての操作がスレッドセーフである場合でも、取得操作にロックは含まれないため、テーブル全体がロックされてすべてのアクセスが拒否されることはありません。このクラスは、スレッドの安全性には依存するが、同期の詳細に依存しないプログラム内で Hashtable との完全な相互運用が可能です。
通常、取得操作 (get を含む) ではブロックは実行されないため、更新操作とオーバーラップする場合があります (put および remove を含む)。取得では、開始時に保持している更新操作のうち、最後に「完了した」更新操作の結果が反映されます。putAll や clear などの集計操作では、並行取得は一部のエントリの挿入や削除だけを反映します。同様に、Iterator および Enumeration は、ある時点または反復子/列挙の作成以降のハッシュテーブルの状態を反映する要素を返します。これらが ConcurrentModificationException
をスローすることはありませんが、一度に 1 つのスレッドのみが反復子を使用するように設計されています。
更新操作で許可される並行処理は、オプションの concurrencyLevel コンストラクタ引数 (デフォルトは 16) により導かれます。この値は内部のサイズ設定のヒントとして使用されます。テーブルは内部的に分割され、指示された数の並行更新を競合しないように許可することを試みます。ハッシュテーブル内の配置は基本的にランダムであるため、実際の並行処理は異なります。理想的には、テーブルを並行して変更するスレッド数に対応した値を選択する必要があります。必要な値よりも著しく大きい値を使用すると領域と時間が浪費され、必要な値よりも著しく小さい値を使用するとスレッドが競合する可能性があります。ただし、通常は、絶対値の順序内部を過大評価および過小評価しても、それほど大きな影響はありません。変更を実行するのは 1 つのスレッドだけで、残りのスレッドはすべて読み取りだけを実行する場合、適切な値は 1 です。また、このハッシュテーブルまたはその他の種類のハッシュテーブルのサイズ変更は相対的に低速な操作であることから、可能な場合は、予想されるテーブルサイズの推定値をコンストラクタに指定しておくことをお勧めします。
このクラスとそのビューおよび反復子は、Map
および Iterator
インタフェースの「オプション」メソッドすべてを実装します。
Hashtable
と同様に (HashMap
とは異なる)、このクラスは、キーまたは値として null を使用することを許可しません。
このクラスは、Java Collections Framework のメンバーです。
入れ子のクラスの概要 |
---|
クラス java.util.AbstractMap から継承された入れ子のクラス/インタフェース |
---|
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V> |
インタフェース java.util.Map から継承された入れ子のクラス/インタフェース |
---|
Map.Entry<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)
マップが 1 つまたは複数のキーと指定された値をマッピングしている場合に true を返します。 |
Enumeration<V> |
elements()
テーブルにある値のリストを返します。 |
Set<Map.Entry<K,V>> |
entrySet()
このマップに含まれるマップの Set ビューを返します。 |
V |
get(Object key)
指定されたキーがマップされている値を返します。 |
boolean |
isEmpty()
マップがキーと値のマッピングを保持しない場合に true を返します。 |
Enumeration<K> |
keys()
テーブルにあるキーの列挙を返します。 |
Set<K> |
keySet()
このマップに含まれるキーの 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()
このマップに含まれる値の Collection ビューを返します。 |
クラス java.util.AbstractMap から継承されたメソッド |
---|
clone, equals, hashCode, toString |
クラス java.lang.Object から継承されたメソッド |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.Map から継承されたメソッド |
---|
equals, hashCode |
コンストラクタの詳細 |
---|
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()
Map<K,V>
内の isEmpty
AbstractMap<K,V>
内の isEmpty
public int size()
Map<K,V>
内の size
AbstractMap<K,V>
内の size
public V get(Object key)
null
を返します。
つまり、このメソッドは、key.equals(k)
となるキー k
から値 v
へのマッピングがこのマップに含まれている場合は v
を返し、それ以外の場合は null
を返します。このようなマッピングが 1 つだけあります。
Map<K,V>
内の get
AbstractMap<K,V>
内の get
key
- 関連付けられた値が返されるキー
null
NullPointerException
- 指定されたキーが null である場合public boolean containsKey(Object key)
Map<K,V>
内の containsKey
AbstractMap<K,V>
内の containsKey
key
- 可能なキー
NullPointerException
- 指定されたキーが null である場合public boolean containsValue(Object value)
Map<K,V>
内の containsValue
AbstractMap<K,V>
内の containsValue
value
- マップにあるかどうかを判定される値
NullPointerException
- 指定された値が null である場合public boolean contains(Object value)
containsValue(java.lang.Object)
と同じ機能を持ちます。これは、Java Collections Framework の導入前にこのメソッドをサポートしていた、Hashtable
クラスとの完全な互換性を維持するためだけに存在します。
value
- 検索する値
NullPointerException
- 指定された値が null である場合public V put(K key, V value)
この値は、元のキーと等しいキーを指定して get メソッドを呼び出すことによって取り出すことができます。
Map<K,V>
内の put
AbstractMap<K,V>
内の put
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値
NullPointerException
- 指定されたキーまたは値が null の場合public V putIfAbsent(K key, V value)
if (!map.containsKey(key)) return map.put(key, value); else return map.get(key);ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V>
内の putIfAbsent
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値
NullPointerException
- 指定されたキーまたは値が null の場合public void putAll(Map<? extends K,? extends V> m)
Map<K,V>
内の putAll
AbstractMap<K,V>
内の putAll
m
- マップに格納されるマッピングpublic V remove(Object key)
Map<K,V>
内の remove
AbstractMap<K,V>
内の remove
key
- 削除するキー
NullPointerException
- 指定されたキーが null である場合public boolean remove(Object key, Object value)
if (map.containsKey(key) && map.get(key).equals(value)) { map.remove(key); return true; } else return false;ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V>
内の remove
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられていると予想される値
NullPointerException
- 指定されたキーが null である場合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;ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V>
内の replace
key
- 指定された値が関連付けられるキーoldValue
- 指定されたキーに関連付けられていると予想される値newValue
- 指定されたキーに関連付けられる値
NullPointerException
- 引数が 1 つでも null の場合public V replace(K key, V value)
if (map.containsKey(key)) { return map.put(key, value); } else return null;ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V>
内の replace
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値
NullPointerException
- 指定されたキーまたは値が null の場合public void clear()
Map<K,V>
内の clear
AbstractMap<K,V>
内の clear
public Set<K> keySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットは、Iterator.remove、Set.remove、removeAll、retainAll、および clear の各オペレーションより、マップから対応するマッピングを削除する要素削除処理をサポートします。Set は、add オペレーションや addAll オペレーションはサポートしていません。
ビューの Iterator は「弱一貫性」を持つ反復子であり、ConcurrentModificationException
をスローすることはなく、反復子の構築時に存在した要素をトラバースすることを保証します。また、構築後のすべての変更を反映します (ただし保証されてはいない)。
Map<K,V>
内の keySet
AbstractMap<K,V>
内の keySet
public Collection<V> values()
Collection
ビューを返します。コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。コレクションは、Iterator.remove、Collection.remove、removeAll、retainAll、および clear オペレーションにより、マップから対応するマッピングを削除する要素削除処理をサポートします。コレクションは、add オペレーションや addAll オペレーションはサポートしていません。
ビューの Iterator は「弱一貫性」を持つ反復子であり、ConcurrentModificationException
をスローすることはなく、反復子の構築時に存在した要素をトラバースすることを保証します。また、構築後のすべての変更を反映します (ただし保証されてはいない)。
Map<K,V>
内の values
AbstractMap<K,V>
内の values
public Set<Map.Entry<K,V>> entrySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットは要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.remove、Set.remove、removeAll、retainAll、および retainAll オペレーションを通して行います。Set は、add オペレーションや addAll オペレーションはサポートしていません。
ビューの Iterator は「弱一貫性」を持つ反復子であり、ConcurrentModificationException
をスローすることはなく、反復子の構築時に存在した要素をトラバースすることを保証します。また、構築後のすべての変更を反映します (ただし保証されてはいない)。
Map<K,V>
内の entrySet
AbstractMap<K,V>
内の entrySet
public Enumeration<K> keys()
keySet()
public Enumeration<V> elements()
values()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。