|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.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 などの集計操作では、同時取得は一部のエントリの挿入や削除だけを反映します。同様に、Iterators および Enumerations は、ある時点または反復子/列挙の作成以来のハッシュテーブルの状態を反映する要素を返します。これらが ConcurrentModificationException をスローすることはありませんが、一度に 1 つのスレッドのみが反復子を使用するように設計されています。
更新操作で許可される同時処理は、オプションの concurrencyLevel コンストラクタ引数 (デフォルトは 16) により導かれます。この値は、内部のサイズ設定のヒントとして使用されます。テーブルは内部的に分割され、指示された数の並列更新を競合せずに許可することを試みます。ハッシュテーブル内の配置は基本的にランダムであるため、実際の並行処理は異なります。理想的には、テーブルを同時に変更するスレッド数に対応した値を選択する必要があります。必要な値よりも著しく大きい値を使用すると空間と時間が浪費され、必要な値よりも著しく小さい値を使用するとスレッドが競合する可能性があります。ただし、通常は、絶対値の順序内部を過大評価および過小評価しても、それほど大きな影響はありません。変更を実行するのは 1 つのスレッドだけで、残りのスレッドはすべて読み取りだけを実行する場合、適切な値は 1 です。また、このハッシュテーブルまたはその他の種類のハッシュテーブルのサイズ変更は相対的に低速な操作であることから、可能な場合は、予想されるテーブルサイズの推定値をコンストラクタに指定しておくことをお勧めします。
このクラスとそのビューおよび反復子は、Map および Iterator インタフェースのオプションのメソッドをすべて実装します。
このクラスは、キーまたは値として null を使用することを許可しません。これは、Hashtable と同様の動作であり、HashMap とは異なる動作です。
このクラスは、Java Collections Framework のメンバです。
| 入れ子のクラスの概要 |
|---|
| インタフェース java.util.Map から継承された入れ子のクラス/インタフェース |
|---|
Map.Entry<K,V> |
| コンストラクタの概要 | |
|---|---|
ConcurrentHashMap()
デフォルトの初期容量、負荷係数、および concurrencyLevel で、新しい空のマップを作成します。 |
|
ConcurrentHashMap(int initialCapacity)
指定された初期容量、デフォルトの負荷係数および concurrencyLevel で、新しい空のマップを作成します。 |
|
ConcurrentHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
指定された初期容量、負荷係数、および並行処理レベルで、新しい空のマップを作成します。 |
|
ConcurrentHashMap(Map<? extends K,? extends V> t)
指定されたマップと同じマッピングで新しいマップを作成します。 |
|
| メソッドの概要 | |
|---|---|
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()
このマップに含まれるマッピングのコレクションビューを返します。 |
V |
get(Object key)
指定されたキーにマップされている、テーブルの値を返します。 |
boolean |
isEmpty()
マップがキーと値のマッピングを保持しない場合に true を返します。 |
Enumeration<K> |
keys()
テーブルにあるキーのリストを返します。 |
Set<K> |
keySet()
このマップに含まれるキーのセットビューを返します。 |
V |
put(K key,
V value)
テーブルで、指定された key を指定された value にマップします。 |
void |
putAll(Map<? extends K,? extends V> t)
指定したマップからこのマップにすべてのマッピングをコピーします。 |
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()
このマップに含まれる値のコレクションビューを返します。 |
| クラス 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)
initialCapacity - 初期容量。ここで指定された要素数を受け入れることができるように、実装は内部のサイズ設定を実行する
IllegalArgumentException - 要素の初期容量が負の場合public ConcurrentHashMap()
public ConcurrentHashMap(Map<? extends K,? extends V> t)
t - マップ| メソッドの詳細 |
|---|
public boolean isEmpty()
AbstractMap の記述: この実装は size() == 0 の結果を返します。
Map<K,V> 内の isEmptyAbstractMap<K,V> 内の isEmptypublic int size()
AbstractMap の記述: この実装は entrySet().size() を返します。
Map<K,V> 内の sizeAbstractMap<K,V> 内の sizepublic V get(Object key)
Map<K,V> 内の getAbstractMap<K,V> 内の getkey - テーブルのキー
NullPointerException - キーが null の場合AbstractMap.containsKey(Object)public boolean containsKey(Object key)
Map<K,V> 内の containsKeyAbstractMap<K,V> 内の containsKeykey - 可能なキー
NullPointerException - キーが null の場合public boolean containsValue(Object value)
Map<K,V> 内の containsValueAbstractMap<K,V> 内の containsValuevalue - マップにあるかどうかを判定される値
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> 内の putAbstractMap<K,V> 内の putkey - テーブルキー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> 内の putIfAbsentkey - 指定される値が関連付けられるキーvalue - 指定されるキーに関連付けられる値
NullPointerException - 指定されたキーまたは値が null の場合public void putAll(Map<? extends K,? extends V> t)
Map<K,V> 内の putAllAbstractMap<K,V> 内の putAllt - マップに格納されるマッピングpublic V remove(Object key)
Map<K,V> 内の removeAbstractMap<K,V> 内の removekey - 削除するキー
NullPointerException - キーが null の場合
public boolean remove(Object key,
Object value)
if (map.get(key).equals(value)) {
map.remove(key);
return true;
} else return false;
ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V> 内の removekey - 指定される値が関連付けられるキーvalue - 指定されるキーに関連付けられる値
NullPointerException - 指定されたキーが null である場合
public boolean replace(K key,
V oldValue,
V newValue)
if (map.get(key).equals(oldValue)) {
map.put(key, newValue);
return true;
} else return false;
ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V> 内の replacekey - 指定される値が関連付けられるキーoldValue - 指定されるキーに関連付けられると予想される値newValue - 指定されるキーに関連付けられる値
NullPointerException - 指定されたキーまたは値が null の場合
public V replace(K key,
V value)
if ((map.containsKey(key)) {
return map.put(key, value);
} else return null;
ただし、アクションが原子的に実行される点が異なります。
ConcurrentMap<K,V> 内の replacekey - 指定される値が関連付けられるキーvalue - 指定されるキーに関連付けられる値
NullPointerException - 指定されたキーまたは値が null の場合public void clear()
Map<K,V> 内の clearAbstractMap<K,V> 内の clearpublic Set<K> keySet()
ConcurrentModificationException をスローすることは決してなく、反復子の構築時に存在した要素を全探索することを保証します。また、構築後の変更を反映することも可能です (ただし保証されてはいない)。
Map<K,V> 内の keySetAbstractMap<K,V> 内の keySetpublic Collection<V> values()
ConcurrentModificationException をスローすることは決してなく、反復子の構築時に存在した要素を全探索することを保証します。また、構築後の変更を反映することも可能です (ただし保証されてはいない)。
Map<K,V> 内の valuesAbstractMap<K,V> 内の valuespublic Set<Map.Entry<K,V>> entrySet()
ConcurrentModificationException をスローすることは決してなく、反復子の構築時に存在した要素を全探索することを保証します。また、構築後のすべての変更を反映することも可能です (ただし保証されてはいない)。
Map<K,V> 内の entrySetAbstractMap<K,V> 内の entrySetpublic Enumeration<K> keys()
keySetpublic Enumeration<V> elements()
values
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。