JavaTM Platform
Standard Ed. 6

java.util.concurrent
インタフェース ConcurrentMap<K,V>

型パラメータ:
K - このマップが保持するキーの型
V - マップされる値の型
すべてのスーパーインタフェース:
Map<K,V>
既知のサブインタフェースの一覧:
ConcurrentNavigableMap<K,V>
既知の実装クラスの一覧:
ConcurrentHashMap, ConcurrentSkipListMap

public interface ConcurrentMap<K,V>
extends Map<K,V>

追加の原子的 putIfAbsentremove、および replace メソッドを提供する Map です。

メモリー整合性効果:ほかの並行処理コレクションと同様、オブジェクトをキーまたは値として ConcurrentMap に配置する前のスレッド内のアクションは、別のスレッドでのそのオブジェクトへのアクセスまたは ConcurrentMap からの削除に続くアクションよりも「前に発生」します。

このインタフェースは、Java Collections Framework のメンバーです。

導入されたバージョン:
1.5

入れ子のクラスの概要
 
インタフェース java.util.Map から継承された入れ子のクラス/インタフェース
Map.Entry<K,V>
 
メソッドの概要
 V putIfAbsent(K key, V value)
          指定されたキーがまだ値と関連付けられていない場合は、指定された値に関連付けます。
 boolean remove(Object key, Object value)
          指定された値にキーが現在マッピングされている場合にのみ、そのキーのエントリを削除します。
 V replace(K key, V value)
          キーが値に現在マッピングされている場合にのみ、そのキーのエントリを置換します。
 boolean replace(K key, V oldValue, V newValue)
          指定された値にキーが現在マッピングされている場合にのみ、そのキーのエントリを置換します。
 
インタフェース java.util.Map から継承されたメソッド
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

メソッドの詳細

putIfAbsent

V putIfAbsent(K key,
              V value)
指定されたキーがまだ値と関連付けられていない場合は、指定された値に関連付けます。これは次の記述と同等です。
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
ただし、アクションが原子的に実行される点が異なります。

パラメータ:
key - 指定された値が関連付けられるキー
value - 指定されたキーに関連付けられる値
戻り値:
指定されたキーに関連付けられた以前の値。キーのマッピングがなかった場合は null。 また、実装が null 値をサポートしている場合、戻り値 null は、以前にマップでキーと null が関連付けられていたことを示す場合もある
例外:
UnsupportedOperationException - put オペレーションがこのマップでサポートされない場合
ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
NullPointerException - 指定されたキーまたは値が null であり、このマップが null のキーまたは値を許可しない場合
IllegalArgumentException - 指定されたキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合

remove

boolean remove(Object key,
               Object value)
指定された値にキーが現在マッピングされている場合にのみ、そのキーのエントリを削除します。これは次の記述と同等です。
if (map.containsKey(key) && map.get(key).equals(value)) {
map.remove(key);
return true;
} else return false;
ただし、アクションが原子的に実行される点が異なります。

パラメータ:
key - 指定された値が関連付けられるキー
value - 指定されたキーに関連付けられていると予想される値
戻り値:
値が削除された場合は true
例外:
UnsupportedOperationException - remove オペレーションがこのマップでサポートされない場合
ClassCastException - キーまたは値がマップに適さない型の場合 (省略可能)
NullPointerException - 指定されたキーまたは値が null のときに、マップが null キーや null 値を許可しない場合 (省略可能)

replace

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;
ただし、アクションが原子的に実行される点が異なります。

パラメータ:
key - 指定された値が関連付けられるキー
oldValue - 指定されたキーに関連付けられていると予想される値
newValue - 指定されたキーに関連付けられる値
戻り値:
値が置換された場合は true
例外:
UnsupportedOperationException - put オペレーションがこのマップでサポートされない場合
ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
NullPointerException - 指定されたキーまたは値が null であり、このマップが null のキーまたは値を許可しない場合
IllegalArgumentException - 指定されたキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合

replace

V replace(K key,
          V value)
キーが値に現在マッピングされている場合にのみ、そのキーのエントリを置換します。これは次の記述と同等です。
if (map.containsKey(key)) {
return map.put(key, value);
} else return null;
ただし、アクションが原子的に実行される点が異なります。

パラメータ:
key - 指定された値が関連付けられるキー
value - 指定されたキーに関連付けられる値
戻り値:
指定されたキーに関連付けられた以前の値。キーのマッピングがなかった場合は null。 また、実装が null 値をサポートしている場合、戻り値 null は、以前にマップでキーと null が関連付けられていたことを示す場合もある
例外:
UnsupportedOperationException - put オペレーションがこのマップでサポートされない場合
ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
NullPointerException - 指定されたキーまたは値が null であり、このマップが null のキーまたは値を許可しない場合
IllegalArgumentException - 指定されたキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。