K - このマップで保持されるキーの型V - マップされる値の型public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
Hashtableと同じ機能仕様に従い、Hashtableの各メソッドに対応するバージョンのメソッドを含みます。 ただし、すべての操作がスレッド・セーフである場合でも、取得操作にロックは含まれないため、テーブル全体がロックされてすべてのアクセスが拒否されることはありません。 このクラスは、そのスレッドの安全性に依存するが、その同期の詳細には依存しないプログラムでHashtableと完全に相互運用できます。
通常、取得操作(getを含む)ではブロックは実行されないため、更新操作とオーバーラップする場合があります(putおよびremoveを含む)。 取得では、開始時に保持している更新操作のうち、最後に完了した更新操作の結果が反映されます。 (つまり、指定されたキーの更新操作によって、更新された値を報告するそのキーの(null以外の)取得との間にhappens-before関係が生まれます。) putAllやclearなどの集計操作では、並行取得は一部のエントリの挿入または削除だけを反映する可能性があります。 同様に、Iterator、SpliteratorおよびEnumerationは、ある時点またはイテレータおよび列挙の作成以降のハッシュ・テーブルの状態を反映する要素を返します。 これらがConcurrentModificationExceptionをスローすることはありません。 しかし、一度に1つのスレッドのみがイテレータを使用するように設計されています。 size、isEmptyおよびcontainsValueを含む集約ステータス・メソッドの結果は、通常、他のスレッドでマップの並行更新が行われていない場合にのみ有効であることに留意してください。 それ以外の場合、これらのメソッドの結果は一時的な状態を反映しているため、モニタリングや推定を目的とする場合には問題ありませんが、プログラムの制御には適していません。
このテーブルは、競合(つまり、別個のハッシュ・コードを持っているが、テーブル・サイズを法とする同じスロットに入るキー)の数が多すぎる場合に動的に拡張され、予想される平均効果として(サイズ変更の負荷係数のしきい値0.75に対応して)マッピング当たりおよそ2個のビンを保持します。 マッピングが追加および削除されると、この平均との差違が大きくなることがありますが、全体としては、ハッシュ・テーブルに関して一般に受け入れられている時間と容量のトレードオフが維持されます。 ただし、このハッシュ・テーブルまたはその他の種類のハッシュ・テーブルのサイズ変更は、相対的に低速な操作である可能性があります。 可能な場合は、サイズの推定値をコンストラクタのオプション引数であるinitialCapacityとして指定することをお薦めします。 コンストラクタの追加のオプション引数であるloadFactorは、指定された要素数に対して割り当てる領域の量を計算するために使用されるテーブル密度を指定することにより、テーブルの初期容量をカスタマイズする追加手段を提供します。 また、このクラスの前のバージョンとの互換性を保つため、予想されるconcurrencyLevelを初期サイズ設定の追加のヒントとしてコンストラクタにオプションで指定することもできます。 まったく同じhashCode()を持つキーを数多く使用すると、ハッシュ・テーブルのパフォーマンスは確実に低下します。 影響を軽減するため、キーがComparableである場合は、このクラスでキー間の比較順序を使用してキーの重複を解消できます。
キーのみが対象であり、マップされる値が(おそらく一時的に)使用されないか、またはすべてが同じマッピング値を取る場合は、ConcurrentHashMapのSet展開を(newKeySet()またはnewKeySet(int)を使用して)作成または(keySet(Object)を使用して)表示できます。
ConcurrentHashMapは、LongAdderの値を使用し、computeIfAbsentで初期化することにより、スケーラブルな頻度マップ(ヒストグラムやマルチセットの形式)として使用できます。 たとえば、ConcurrentHashMap<String,LongAdder> freqsにカウントを追加するには、freqs.computeIfAbsent(k -> new LongAdder()).increment();を使用できます。
このクラスとそのビューおよびイテレータは、MapおよびIteratorインタフェースのオプション・メソッドすべてを実装します。
Hashtableと同様に(HashMapとは異なる)、このクラスは、キーまたは値としてnullが使用されることを許可しません。
ConcurrentHashMapは、ほとんどのStreamメソッドとは異なり、たとえば共有レジストリ内の値のスナップショット・サマリーを計算するときに、他のスレッドで並行して更新されるマップでも安全(かつ多くの場合適切に)適用されるように設計された一連の順次および並列の一括オペレーションをサポートします。 3種類のオペレーションがあり、それぞれにキー、値、エントリおよび(キー、値)の各引数または戻り値、あるいはその両方を持つ関数を受け入れる4つの形式があります。 ConcurrentHashMapの要素は特定の方法で順序付けられておらず、異なる並列実行で異なる順序で処理される可能性があるため、指定された関数の正確性が任意の順序や、計算の進行中に一時的に変更される可能性があるその他のオブジェクトまたは値に依存しないようにしてください。また、forEachアクションの場合を除き、副作用がないことが理想です。 Map.Entryオブジェクトに対する一括オペレーションでは、setValueメソッドはサポートされません。
これらの一括オペレーションは、parallelismThreshold引数を受け入れます。 現在のマップ・サイズが指定されたしきい値より小さいと推定された場合は、メソッドが逐次的に進行します。 値Long.MAX_VALUEを使用すると、すべての並列処理が抑制されます。 値1を使用すると、すべての並列計算に使用されるForkJoinPool.commonPool()をフル活用するのに十分な数のサブタスクにパーティション化することによって、最大限の並列処理が行われます。 通常は、最初にこれらの極値のいずれかを選択し、その後オーバーヘッドとスループットのバランスを取った中間値を使用してパフォーマンスを計測します。
一括オペレーションの並行性プロパティは、ConcurrentHashMapの並行性プロパティから得られます。get(key)および関連するアクセス・メソッドからnull以外の結果が返されると、関連する挿入または更新との間にhappens-before関係が生まれます。 一括オペレーションの結果は、これらの要素単位の関係の構成を反映します(ただし、なんらかの方法で休止していることがわかった場合を除き、マップ全体に関して原子的である必要はありません)。 逆に、マップ内のキーと値がnullになることはないため、nullは結果が現在存在しないことを確実かつ原子的に示す役割を果たします。 このプロパティを保持するため、nullはすべての非スカラー・リダクション・オペレーションの暗黙的な基準として機能します。 double、longおよびintのバージョンでは、この基準は他の値と結合されたときにその値を返すもの(つまり、リダクションの識別要素)である必要があります。 0を基準とする合計の計算やMAX_VALUEを基準とする最小数の計算など、ほとんどの一般的なリダクションにはこれらのプロパティがあります。
引数として指定される検索および変換関数も、同様に結果が存在しないことを示すためにnullを返す必要があります(その場合、結果は使用されません)。 マップされたリダクションの場合は、これによってフィルタとして機能する変換も可能になります。要素が結合されない場合は、null(プリミティブ特化の場合は識別基準)が返されます。 変換とフィルタリングの複合処理を作成するには、それらを検索またはリデュースのオペレーションで使用する前に、この「nullは現在何も存在しないことを意味する」というルールに従ってそれらを自分で構成します。
Entry引数を受け入れたり、返したりするメソッドは、キーと値の関連付けを保持します。 これらは、たとえば最大値のキーを見つけるときに便利です。 単純なEntry引数は、new AbstractMap.SimpleEntry(k,v)を使用して指定できます。
一括オペレーションは、指定された関数の使用時に検出された例外をスローして、突然完了することがあります。 このような例外を処理するときは、他の並列実行されている関数も例外をスローした可能性があることや、最初の例外が発生しなかった場合は他の並列実行されている関数が例外をスローしたことに留意してください。
逐次形式に比べて並列形式の方が高速化されることは、一般的ですが保証はされません。 計算を並列化するためのベースとなる作業が計算自体より高負荷である場合、小さいマップに対する簡単な関数が関与する並列オペレーションは、逐次形式より実行速度が低くなる可能性があります。 同様に、すべてのプロセッサが無関係のタスクの実行でビジー状態である場合は、並列化しても実際にはそれほど多くの並列処理は行われない可能性があります。
すべてのタスク・メソッドに対するすべての引数は、null以外である必要があります。
このクラスは、Java Collections Frameworkのメンバーです。
| 修飾子と型 | クラス | 説明 |
|---|---|---|
static class |
ConcurrentHashMap.KeySetView<K,V> |
キーの
SetとしてのConcurrentHashMapのビューです。オプションで、共通の値にマップすることによって追加を有効化できます。 |
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>| コンストラクタ | 説明 |
|---|---|
ConcurrentHashMap() |
デフォルトの初期テーブル・サイズ(16)で、新しい空のマップを作成します。
|
ConcurrentHashMap(int initialCapacity) |
動的にサイズを変更せずに、指定された数の要素を格納できる初期テーブル・サイズで、新しい空のマップを作成します。
|
ConcurrentHashMap(int initialCapacity, float loadFactor) |
指定された要素数(
initialCapacity)と初期テーブル密度(loadFactor)に基づく初期テーブル・サイズで、新しい空のマップを作成します。 |
ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) |
指定された要素数(
initialCapacity)、テーブル密度(loadFactor)および並行更新数のしきい値(concurrencyLevel)に基づく初期テーブル・サイズで、新しい空のマップを作成します。 |
ConcurrentHashMap(Map<? extends K,? extends V> m) |
指定されたマップと同じマッピングで新しいマップを作成します。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
clear() |
すべてのマッピングをマップから削除します。
|
V |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) |
指定されたキーと現在マップされている値に対するマッピングの計算を試みます(現在のマッピングが存在しない場合は
null)。 |
V |
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) |
指定されたキーがまだ値に関連付けられていない場合、指定されたマッピング関数を使用してその値の計算を試行し、
nullでない場合はそれをこのマップに入力します。 |
V |
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) |
指定されたキーの値が存在する場合、キーと現在マップされている値から新しいマッピングの計算を試みます。
|
boolean |
contains(Object value) |
一部のキーがこのテーブル内の指定された値にマッピングされるかどうかをテストする従来のメソッド。
|
boolean |
containsKey(Object key) |
指定されたオブジェクトが、このテーブルのキーかどうかを判定します。
|
boolean |
containsValue(Object value) |
マップが1つまたは複数のキーを指定された値にマッピングしている場合に
trueを返します。 |
Enumeration<V> |
elements() |
テーブルにある値のリストを返します。
|
Set<Map.Entry<K,V>> |
entrySet() |
このマップに含まれるマッピングの
Setビューを返します。 |
boolean |
equals(Object o) |
指定されたオブジェクトがこのマップと等しいかどうかを比較します。
|
void |
forEach(BiConsumer<? super K,? super V> action) |
このマップのすべてのエントリの処理が完了するかアクションから例外がスローされるまで、各エントリに対して指定されたアクションを実行します。
|
void |
forEach(long parallelismThreshold, BiConsumer<? super K,? super V> action) |
各(key, value)に対して指定されたアクションを実行します。
|
<U> void |
forEach(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, Consumer<? super U> action) |
各(キー, 値)のnullでない各変換に対し、指定されたアクションを実行します。
|
void |
forEachEntry(long parallelismThreshold, Consumer<? super Map.Entry<K,V>> action) |
各エントリに対して指定されたアクションを実行します。
|
<U> void |
forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, Consumer<? super U> action) |
各エントリのnull以外の各変換に対して指定されたアクションを実行します。
|
void |
forEachKey(long parallelismThreshold, Consumer<? super K> action) |
各キーに対して指定されたアクションを実行します。
|
<U> void |
forEachKey(long parallelismThreshold, Function<? super K,? extends U> transformer, Consumer<? super U> action) |
各キーのnull以外の各変換に対して指定されたアクションを実行します。
|
void |
forEachValue(long parallelismThreshold, Consumer<? super V> action) |
各値に対して指定されたアクションを実行します。
|
<U> void |
forEachValue(long parallelismThreshold, Function<? super V,? extends U> transformer, Consumer<? super U> action) |
各値のnull以外の各変換に対して指定されたアクションを実行します。
|
V |
get(Object key) |
指定されたキーがマップされている値を返します。このマップにそのキーのマッピングが含まれていない場合は
nullを返します。 |
V |
getOrDefault(Object key, V defaultValue) |
指定されたキーがマップされる値を返します。このマップにそのキーのマッピングが含まれていない場合は、指定されたデフォルト値を返します。
|
int |
hashCode() |
この
Mapのハッシュ・コード値(つまり、マップ内の各キーと値のペアのkey.hashCode() ^ value.hashCode()の合計)を返します。 |
boolean |
isEmpty() |
このマップがキーと値のマッピングを保持しない場合にtrueを返します。
|
Enumeration<K> |
keys() |
テーブルにあるキーの列挙を返します。
|
ConcurrentHashMap.KeySetView<K,V> |
keySet() |
このマップに含まれるキーの
Setビューを返します。 |
ConcurrentHashMap.KeySetView<K,V> |
keySet(V mappedValue) |
このマップ内のキーの
Setビューを返します。追加(つまり、Collection.add(E)およびCollection.addAll(Collection))には、指定された共通のマップされた値を使用します。 |
long |
mappingCount() |
マッピングの数を返します。
|
V |
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) |
指定されたキーがまだ(nullでない)値と関連付けられていない場合は、指定された値に関連付けます。
|
static <K> ConcurrentHashMap.KeySetView<K,Boolean> |
newKeySet() |
指定された型から
Boolean.TRUEへの、ConcurrentHashMapに連動する新しいSetを作成します。 |
static <K> ConcurrentHashMap.KeySetView<K,Boolean> |
newKeySet(int initialCapacity) |
指定された型から
Boolean.TRUEへの、ConcurrentHashMapに連動する新しいSetを作成します。 |
V |
put(K key, V value) |
このテーブルで、指定されたキーを指定された値にマップします。
|
void |
putAll(Map<? extends K,? extends V> m) |
指定したマップからこのマップにすべてのマッピングをコピーします。
|
V |
putIfAbsent(K key, V value) |
指定されたキーがまだ値と関連付けられていない場合は、指定された値に関連付けます。
|
<U> U |
reduce(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer) |
指定されたリデューサを使用して値を結合することにより、すべての(キー、値)ペアの指定された変換の累積結果を返します。結果がない場合はnullを返します。
|
Map.Entry<K,V> |
reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>,Map.Entry<K,V>,? extends Map.Entry<K,V>> reducer) |
指定されたリデューサを使用して値を結合することにより、すべてのエントリの累積結果を返します。結果がない場合はnullを返します。
|
<U> U |
reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer) |
指定されたリデューサを使用して値を結合することにより、すべてのエントリの指定された変換の累積結果を返します。結果がない場合はnullを返します。
|
double |
reduceEntriesToDouble(long parallelismThreshold, ToDoubleFunction<Map.Entry<K,V>> transformer, double basis, DoubleBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのエントリの指定された変換の累積結果を返します。
|
int |
reduceEntriesToInt(long parallelismThreshold, ToIntFunction<Map.Entry<K,V>> transformer, int basis, IntBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのエントリの指定された変換の累積結果を返します。
|
long |
reduceEntriesToLong(long parallelismThreshold, ToLongFunction<Map.Entry<K,V>> transformer, long basis, LongBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのエントリの指定された変換の累積結果を返します。
|
K |
reduceKeys(long parallelismThreshold, BiFunction<? super K,? super K,? extends K> reducer) |
指定されたリデューサを使用して値を結合することにより、すべてのキーの累積結果を返します。結果がない場合はnullを返します。
|
<U> U |
reduceKeys(long parallelismThreshold, Function<? super K,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer) |
指定されたリデューサを使用して値を結合することにより、すべてのキーの指定された変換の累積結果を返します。結果がない場合はnullを返します。
|
double |
reduceKeysToDouble(long parallelismThreshold, ToDoubleFunction<? super K> transformer, double basis, DoubleBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのキーの指定された変換の累積結果を返します。
|
int |
reduceKeysToInt(long parallelismThreshold, ToIntFunction<? super K> transformer, int basis, IntBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのキーの指定された変換の累積結果を返します。
|
long |
reduceKeysToLong(long parallelismThreshold, ToLongFunction<? super K> transformer, long basis, LongBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべてのキーの指定された変換の累積結果を返します。
|
double |
reduceToDouble(long parallelismThreshold, ToDoubleBiFunction<? super K,? super V> transformer, double basis, DoubleBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての(キー、値)ペアの指定された変換の累積結果を返します。
|
int |
reduceToInt(long parallelismThreshold, ToIntBiFunction<? super K,? super V> transformer, int basis, IntBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての(キー、値)ペアの指定された変換の累積結果を返します。
|
long |
reduceToLong(long parallelismThreshold, ToLongBiFunction<? super K,? super V> transformer, long basis, LongBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての(キー、値)ペアの指定された変換の累積結果を返します。
|
V |
reduceValues(long parallelismThreshold, BiFunction<? super V,? super V,? extends V> reducer) |
指定されたリデューサを使用して値を結合することにより、すべての値の累積結果を返します。結果がない場合はnullを返します。
|
<U> U |
reduceValues(long parallelismThreshold, Function<? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer) |
指定されたリデューサを使用して値を結合することにより、すべての値の指定された変換の累積結果を返します。結果がない場合はnullを返します。
|
double |
reduceValuesToDouble(long parallelismThreshold, ToDoubleFunction<? super V> transformer, double basis, DoubleBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての値の指定された変換の累積結果を返します。
|
int |
reduceValuesToInt(long parallelismThreshold, ToIntFunction<? super V> transformer, int basis, IntBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての値の指定された変換の累積結果を返します。
|
long |
reduceValuesToLong(long parallelismThreshold, ToLongFunction<? super V> transformer, long basis, LongBinaryOperator reducer) |
指定されたリデューサを使用して値を結合し、指定された基準を識別値として使用して、すべての値の指定された変換の累積結果を返します。
|
V |
remove(Object key) |
キー(およびそれに対応する値)をこのマップから削除します。
|
boolean |
remove(Object key, Object value) |
指定された値にキーが現在マッピングされている場合にのみ、そのキーのエントリを削除します。
|
V |
replace(K key, V value) |
キーが値に現在マッピングされている場合にのみ、そのキーのエントリを置換します。
|
boolean |
replace(K key, V oldValue, V newValue) |
指定された値にキーが現在マッピングされている場合にのみ、そのキーのエントリを置換します。
|
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function) |
すべてのエントリが処理されるか、または関数が例外をスローするまで、各エントリの値を、そのエントリで指定された関数を呼び出した結果で置換します。
|
<U> U |
search(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> searchFunction) |
指定された検索関数を各(キー、値)に適用し、nullでない結果を返します(存在しない場合はnull)。
|
<U> U |
searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> searchFunction) |
各エントリに指定された検索関数を適用したnull以外の結果を返します。結果がない場合はnullを返します。
|
<U> U |
searchKeys(long parallelismThreshold, Function<? super K,? extends U> searchFunction) |
各キーに指定された検索関数を適用したnull以外の結果を返します。結果がない場合はnullを返します。
|
<U> U |
searchValues(long parallelismThreshold, Function<? super V,? extends U> searchFunction) |
各値に指定された検索関数を適用したnull以外の結果を返します。結果がない場合はnullを返します。
|
int |
size() |
このマップ内のキー値マッピングの数を返します。
|
String |
toString() |
このマップの文字列表現を返します。
|
Collection<V> |
values() |
このマップに含まれる値の
Collectionビューを返します。 |
clonepublic ConcurrentHashMap()
public ConcurrentHashMap(int initialCapacity)
initialCapacity - 実装は、この多数の要素を格納するように内部のサイズ設定を実行する。IllegalArgumentException - 要素の初期容量が負の場合public ConcurrentHashMap(Map<? extends K,? extends V> m)
m - マップpublic ConcurrentHashMap(int initialCapacity,
float loadFactor)
initialCapacity)と初期テーブル密度(loadFactor)に基づく初期テーブル・サイズで、新しい空のマップを作成します。initialCapacity - 初期容量。 負荷係数を指定すると、実装はこの数の要素を格納できるように内部のサイズ設定を行う。 loadFactor - 初期テーブル・サイズを設定するための負荷係数(テーブル密度)IllegalArgumentException - 要素の初期容量が負であるか、または負荷係数が正でない場合public ConcurrentHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
initialCapacity)、テーブル密度(loadFactor)および並行更新数のしきい値(concurrencyLevel)に基づく初期テーブル・サイズで、新しい空のマップを作成します。initialCapacity - 初期容量。 負荷係数を指定すると、実装はこの数の要素を格納できるように内部のサイズ設定を行う。 loadFactor - 初期テーブル・サイズを設定するための負荷係数(テーブル密度)concurrencyLevel - 並行して更新しているスレッドの推定数。 実装はこの値をサイズ設定のヒントとして使用できる。 IllegalArgumentException - 初期容量が負であるか、負荷係数またはconcurrencyLevelが正でない場合public int size()
public boolean isEmpty()
public V get(Object key)
nullを返します。
つまり、このメソッドは、key.equals(k)となるキーkから値vへのマッピングがこのマップに含まれている場合はvを返し、それ以外の場合はnullを返します。 (このようなマッピングは1つのみ存在できます。)
get、インタフェースMap<K,V>get、クラスAbstractMap<K,V>key - 関連付けられた値が返されるキーnullNullPointerException - 指定されたキーがnullである場合public boolean containsKey(Object key)
containsKey、インタフェースMap<K,V>containsKey、クラスAbstractMap<K,V>key - 使用可能なキーequalsメソッドによって決定されるように、指定されたオブジェクトがこのテーブル内のキーである場合にのみtrue。それ以外の場合はfalseNullPointerException - 指定されたキーがnullである場合public boolean containsValue(Object value)
trueを返します。 ノート: このメソッドは、マップの完全なトラバーサルを必要とする場合があり、containsKeyメソッドに比べてはるかに低速です。 containsValue、インタフェースMap<K,V>containsValue、クラスAbstractMap<K,V>value - このマップにあるかどうかが判定される値trueNullPointerException - 指定された値がnullである場合public V put(K key, V value)
この値は、元のキーに等しいキーを指定してgetメソッドを呼び出すことによって取得できます。
put、インタフェースMap<K,V>put、クラスAbstractMap<K,V>key - 指定された値が関連付けられるキーvalue - 指定されたキーに関連付けられる値keyに以前に関連付けられていた値。keyのマッピングが存在しなかった場合はnullNullPointerException - 指定されたキーまたは値がnullの場合public void putAll(Map<? extends K,? extends V> m)
public V remove(Object key)
remove、インタフェースMap<K,V>remove、クラスAbstractMap<K,V>key - 削除するキーkeyに以前に関連付けられていた値。keyのマッピングが存在しなかった場合はnullNullPointerException - 指定されたキーがnullである場合public void clear()
public ConcurrentHashMap.KeySetView<K,V> keySet()
Setビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットは要素の削除をサポートしており、対応するマッピングをこのマップから削除できます。削除は、Iterator.remove、Set.remove、removeAll、retainAllおよびclearオペレーションを通して行います。 addまたはaddAllオペレーションはサポートされていません。
ビューのイテレータおよびスプリッテレータは、弱一貫性を持っています。
ビューのspliteratorは、Spliterator.CONCURRENT、Spliterator.DISTINCTおよびSpliterator.NONNULLを報告します。
public Collection<V> values()
Collectionビューを返します。 コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。 コレクションは要素の削除をサポートしており、対応するマッピングをこのマップから削除できます。削除は、Iterator.remove、Collection.remove、removeAll、retainAllおよびclearオペレーションを通して行います。 addまたはaddAllオペレーションはサポートされていません。
ビューのイテレータおよびスプリッテレータは、弱一貫性を持っています。
ビューのspliteratorは、Spliterator.CONCURRENTおよびSpliterator.NONNULLを報告します。
public Set<Map.Entry<K,V>> entrySet()
Setビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、およびclearオペレーションで対応するマッピングをマップから削除します。
ビューのイテレータおよびスプリッテレータは、弱一貫性を持っています。
ビューのspliteratorは、Spliterator.CONCURRENT、Spliterator.DISTINCTおよびSpliterator.NONNULLを報告します。
public int hashCode()
Mapのハッシュ・コード値(つまり、マップ内の各キーと値のペアのkey.hashCode() ^ value.hashCode()の合計)を返します。hashCode、インタフェースMap<K,V>hashCode、クラスAbstractMap<K,V>Map.Entry.hashCode(), Object.equals(Object), Set.equals(Object)public String toString()
{}")で囲んだリストで構成されます。 隣接するマッピングは、文字", " (カンマと空白文字)によって区切られます。 各キーと値のマッピングは、キーの後に等号("=")が続き、その次にキーと関連付けられる値が続くという形で表現されます。 toString、クラスAbstractMap<K,V>public boolean equals(Object o)
trueを返します。 このオペレーションは、マップのいずれかがこのメソッドの実行中に並行して変更された場合、誤解を招きやすい結果を返すことがあります。 equals、インタフェースMap<K,V>equals、クラスAbstractMap<K,V>o - このマップと等しいかどうかが比較されるオブジェクトtrueObject.hashCode()、HashMappublic 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 - 指定されたキーに関連付けられる値null。NullPointerException - 指定されたキーまたは値がnullの場合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 - 指定されたキーに関連付けられていると予想される値trueNullPointerException - 指定されたキーがnullである場合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 - 指定されたキーに関連付けられる値trueNullPointerException - 引数が1つでもnullの場合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 - 指定されたキーに関連付けられる値null。NullPointerException - 指定されたキーまたは値がnullの場合public V getOrDefault(Object key, V defaultValue)
getOrDefault、インタフェースConcurrentMap<K,V>getOrDefault、インタフェースMap<K,V>key - 関連付けられた値が返されるキーdefaultValue - このマップに指定されたキーのマッピングが含まれていない場合に返す値NullPointerException - 指定されたキーがnullである場合public void forEach(BiConsumer<? super K,? super V> action)
ConcurrentMappublic void replaceAll(BiFunction<? super K,? super V,? extends V> function)
ConcurrentMapreplaceAll、インタフェースConcurrentMap<K,V>replaceAll、インタフェースMap<K,V>function - 各エントリに適用する関数public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
nullでない場合はそれをこのマップに入力します。 メソッドの呼出し全体は原子的に実行されるため、関数はキーごとに多くても1回しか適用されません。 他のスレッドがこのマップに対して試行する更新オペレーションの一部は計算の進行中にブロックされる可能性があるため、計算は短く簡単にしてください。また、計算でこのマップの他のマッピングを更新しようとしないでください。 computeIfAbsent、インタフェースConcurrentMap<K,V>computeIfAbsent、インタフェースMap<K,V>key - 指定された値が関連付けられるキーmappingFunction - 値を計算するための関数NullPointerException - 指定されたキーまたはmappingFunctionがnullである場合IllegalStateException - 計算で、他の方法では完了しない再帰的な更新がこのマップに対して試行されたことが検出された場合RuntimeException - (またはError) mappingFunctionでそうなった場合(この場合、マッピングは確立されていない状態のままになる)public V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
computeIfPresent、インタフェースConcurrentMap<K,V>computeIfPresent、インタフェースMap<K,V>key - 値を関連付けることができるキーremappingFunction - 値を計算するための関数NullPointerException - 指定されたキーまたはremappingFunctionがnullである場合IllegalStateException - 計算で、他の方法では完了しない再帰的な更新がこのマップに対して試行されたことが検出された場合RuntimeException - (またはError) remappingFunctionで例外またはエラーが発生した場合(この場合、マッピングは変更されない)public V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
null)。 メソッドの呼出し全体は原子的に実行されます。 他のスレッドがこのマップに対して試行する更新オペレーションの一部は計算の進行中にブロックされる可能性があるため、計算は短く簡単にしてください。また、計算でこのマップの他のマッピングを更新しようとしないでください。 compute、インタフェースConcurrentMap<K,V>compute、インタフェースMap<K,V>key - 指定された値が関連付けられるキーremappingFunction - 値を計算するための関数NullPointerException - 指定されたキーまたはremappingFunctionがnullである場合IllegalStateException - 計算で、他の方法では完了しない再帰的な更新がこのマップに対して試行されたことが検出された場合RuntimeException - (またはError) remappingFunctionで例外またはエラーが発生した場合(この場合、マッピングは変更されない)public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
nullの場合は削除します。 メソッドの呼出し全体は原子的に実行されます。 他のスレッドがこのマップに対して試行する更新オペレーションの一部は計算の進行中にブロックされる可能性があるため、計算は短く簡単にしてください。また、計算でこのマップの他のマッピングを更新しようとしないでください。 merge、インタフェースConcurrentMap<K,V>merge、インタフェースMap<K,V>key - 指定された値が関連付けられるキーvalue - 値が存在しない場合に使用する値remappingFunction - 値が存在する場合に値を再計算するための関数NullPointerException - 指定されたキーまたはremappingFunctionがnullである場合RuntimeException - (またはError) remappingFunctionで例外またはエラーが発生した場合(この場合、マッピングは変更されない)public boolean contains(Object value)
containsValue(Object)と機能的には同じであり、Java Collections Frameworkの導入前にこのメソッドをサポートしていたHashtableクラスとの完全な互換性を保証するためにのみ存在します。 value - 検索する値equalsメソッドで決められているように、一部のキーがこのテーブル内のvalue引数にマッピングされる場合にのみtrue。それ以外の場合はfalseNullPointerException - 指定された値がnullである場合public Enumeration<K> keys()
keySet()public Enumeration<V> elements()
values()public long mappingCount()
size()のかわりにこのメソッドを使用するようにしてください。 返される値は推定値であり、挿入や削除が同時に行われた場合、実際のカウントは異なる可能性があります。 public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet()
Boolean.TRUEへの、ConcurrentHashMapに連動する新しいSetを作成します。K - 返されるセットの要素型public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet(int initialCapacity)
Boolean.TRUEへの、ConcurrentHashMapに連動する新しいSetを作成します。K - 返されるセットの要素型initialCapacity - 実装は、この多数の要素を格納するように内部のサイズ設定を実行する。IllegalArgumentException - 要素の初期容量が負の場合public ConcurrentHashMap.KeySetView<K,V> keySet(V mappedValue)
Setビューを返します。追加(つまり、Collection.add(E)およびCollection.addAll(Collection))には、指定された共通のマップされた値を使用します。 これは、当然ながら、このビューからのすべての追加で同じ値を使用することが許容される場合にのみ適しています。 mappedValue - 追加に使用するマップされた値NullPointerException - mappedValueがnullである場合public void forEach(long parallelismThreshold,
BiConsumer<? super K,? super V> action)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数action - アクションpublic <U> void forEach(long parallelismThreshold,
BiFunction<? super K,? super V,? extends U> transformer,
Consumer<? super U> action)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、アクションは適用されない)action - アクションpublic <U> U search(long parallelismThreshold,
BiFunction<? super K,? super V,? extends U> searchFunction)
U - 検索関数の戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数searchFunction - 成功した場合はnull以外の結果を返し、それ以外の場合はnullを返す関数。public <U> U reduce(long parallelismThreshold,
BiFunction<? super K,? super V,? extends U> transformer,
BiFunction<? super U,? super U,? extends U> reducer)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、値は結合されない)reducer - 交換可能性と結合性を持つ結合関数public double reduceToDouble(long parallelismThreshold,
ToDoubleBiFunction<? super K,? super V> transformer,
double basis,
DoubleBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public long reduceToLong(long parallelismThreshold,
ToLongBiFunction<? super K,? super V> transformer,
long basis,
LongBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public int reduceToInt(long parallelismThreshold,
ToIntBiFunction<? super K,? super V> transformer,
int basis,
IntBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public void forEachKey(long parallelismThreshold,
Consumer<? super K> action)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数action - アクションpublic <U> void forEachKey(long parallelismThreshold,
Function<? super K,? extends U> transformer,
Consumer<? super U> action)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、アクションは適用されない)action - アクションpublic <U> U searchKeys(long parallelismThreshold,
Function<? super K,? extends U> searchFunction)
U - 検索関数の戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数searchFunction - 成功した場合はnull以外の結果を返し、それ以外の場合はnullを返す関数。public K reduceKeys(long parallelismThreshold, BiFunction<? super K,? super K,? extends K> reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数reducer - 交換可能性と結合性を持つ結合関数public <U> U reduceKeys(long parallelismThreshold,
Function<? super K,? extends U> transformer,
BiFunction<? super U,? super U,? extends U> reducer)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、値は結合されない)reducer - 交換可能性と結合性を持つ結合関数public double reduceKeysToDouble(long parallelismThreshold,
ToDoubleFunction<? super K> transformer,
double basis,
DoubleBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public long reduceKeysToLong(long parallelismThreshold,
ToLongFunction<? super K> transformer,
long basis,
LongBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public int reduceKeysToInt(long parallelismThreshold,
ToIntFunction<? super K> transformer,
int basis,
IntBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public void forEachValue(long parallelismThreshold,
Consumer<? super V> action)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数action - アクションpublic <U> void forEachValue(long parallelismThreshold,
Function<? super V,? extends U> transformer,
Consumer<? super U> action)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、アクションは適用されない)action - アクションpublic <U> U searchValues(long parallelismThreshold,
Function<? super V,? extends U> searchFunction)
U - 検索関数の戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数searchFunction - 成功した場合はnull以外の結果を返し、それ以外の場合はnullを返す関数。public V reduceValues(long parallelismThreshold, BiFunction<? super V,? super V,? extends V> reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数reducer - 交換可能性と結合性を持つ結合関数public <U> U reduceValues(long parallelismThreshold,
Function<? super V,? extends U> transformer,
BiFunction<? super U,? super U,? extends U> reducer)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、値は結合されない)reducer - 交換可能性と結合性を持つ結合関数public double reduceValuesToDouble(long parallelismThreshold,
ToDoubleFunction<? super V> transformer,
double basis,
DoubleBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public long reduceValuesToLong(long parallelismThreshold,
ToLongFunction<? super V> transformer,
long basis,
LongBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public int reduceValuesToInt(long parallelismThreshold,
ToIntFunction<? super V> transformer,
int basis,
IntBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public void forEachEntry(long parallelismThreshold,
Consumer<? super Map.Entry<K,V>> action)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数action - アクションpublic <U> void forEachEntry(long parallelismThreshold,
Function<Map.Entry<K,V>,? extends U> transformer,
Consumer<? super U> action)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、アクションは適用されない)action - アクションpublic <U> U searchEntries(long parallelismThreshold,
Function<Map.Entry<K,V>,? extends U> searchFunction)
U - 検索関数の戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数searchFunction - 成功した場合はnull以外の結果を返し、それ以外の場合はnullを返す関数。public Map.Entry<K,V> reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>,Map.Entry<K,V>,? extends Map.Entry<K,V>> reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数reducer - 交換可能性と結合性を持つ結合関数public <U> U reduceEntries(long parallelismThreshold,
Function<Map.Entry<K,V>,? extends U> transformer,
BiFunction<? super U,? super U,? extends U> reducer)
U - トランスフォーマの戻り値の型parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数。変換がない場合はnull(その場合、値は結合されない)reducer - 交換可能性と結合性を持つ結合関数public double reduceEntriesToDouble(long parallelismThreshold,
ToDoubleFunction<Map.Entry<K,V>> transformer,
double basis,
DoubleBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public long reduceEntriesToLong(long parallelismThreshold,
ToLongFunction<Map.Entry<K,V>> transformer,
long basis,
LongBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数public int reduceEntriesToInt(long parallelismThreshold,
ToIntFunction<Map.Entry<K,V>> transformer,
int basis,
IntBinaryOperator reducer)
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数transformer - 要素の変換を返す関数basis - リダクションの識別(初期のデフォルト値)reducer - 交換可能性と結合性を持つ結合関数 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。