Java ConcurrentMap インターフェイス
Java ConcurrentMap インターフェイス
このチュートリアルでは、Java ConcurrentMap インターフェイスとそのメソッドについて学習します。
ConcurrentMap
Java コレクション フレームワークのインターフェイスは、スレッド セーフなマップを提供します。つまり、マップ内のエントリの一貫性に影響を与えることなく、複数のスレッドが一度にマップにアクセスできます。
ConcurrentMap
同期マップとして知られています。
Map インターフェースを拡張します。
ConcurrentMap を実装するクラス
ConcurrentMap
以降 はインターフェースなので、そこからオブジェクトを作成することはできません.
ConcurrentMap
の機能を使用するには インターフェイス、クラス ConcurrentHashMap
を使用する必要があります
ConcurrentMap の使用方法
ConcurrentMap
を使用するには 、 java.util.concurrent.ConcurrentMap
をインポートする必要があります 最初にパッケージ。パッケージをインポートしたら、次の方法で並行マップを作成できます。
// ConcurrentMap implementation by ConcurrentHashMap
CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
上記のコードでは、numbers という名前の並行マップを作成しました。 .
ここで、
- キー - マップ内の各要素 (値) を関連付けるために使用される一意の識別子
- 値 - マップ内のキーによって関連付けられた要素
ConcurrentMap のメソッド
ConcurrentMap
インターフェイスには Map
のすべてのメソッドが含まれています インターフェース。 Map
だからです ConcurrentMap
のスーパーインターフェースです
これらすべてのメソッドに加えて、ConcurrentMap
に固有のメソッドを次に示します。
- putIfAbsent() - 指定されたキーがまだ値に関連付けられていない場合、指定されたキー/値をマップに挿入します。
- compute() - 指定されたキーと以前にマップされた値のエントリ (キー/値のマッピング) を計算します。
- computeIfAbsent() - キーがまだ値にマップされていない場合、指定されたキーの指定された関数を使用して値を計算します。
- computeIfPresent() - キーが指定された値に既にマップされている場合、指定されたキーの新しいエントリ (キー/値のマッピング) を計算します。
- forEach() - マップのすべてのエントリにアクセスし、指定されたアクションを実行する
- merge() - キーがすでに特定の値にマップされている場合、指定されたキーの古い値と新しい指定された値をマージします。キーがまだマッピングされていない場合、メソッドは単に指定された値をキーに関連付けます。
詳細については、Java ConcurrentMap (Java の公式ドキュメント) にアクセスしてください。
ConcurrentHashMap での ConcurrentMap の実装
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
class Main {
public static void main(String[] args) {
// Creating ConcurrentMap using ConcurrentHashMap
ConcurrentMap<String, Integer> numbers = new ConcurrentHashMap<>();
// Insert elements to map
numbers.put("Two", 2);
numbers.put("One", 1);
numbers.put("Three", 3);
System.out.println("ConcurrentMap: " + numbers);
// Access the value of specified key
int value = numbers.get("One");
System.out.println("Accessed Value: " + value);
// Remove the value of specified key
int removedValue = numbers.remove("Two");
System.out.println("Removed Value: " + removedValue);
}
}
出力
ConcurrentMap: {One=1, Two=2, Three=3} Accessed Value: 1 Removed Value: 2
ConcurrentHashMap
について詳しく知るには 、Java ConcurrentHashMap にアクセスしてください。
Java