3

キーがまだ存在しない場合にのみ、キーと値のペアをマップに挿入したいと思います。それ以外の場合は、既存の値を置き換えずに取得したいと思います。これは、get() の後に条件付き put() を実行することで実行できます。ただし、これには Map 内のキーの場所を 2 回解決する必要があり (マップの実装に応じて 2 回のハッシュ、2 回のツリー トラバーサルなど)、不要に思われます。C++ STL で map::insert が機能するのと同様に、標準の Map 実装のいずれかでこの操作を要約できますか?

4

1 に答える 1

5

ConcurrentMapputIfAbsentメソッドを持っています。

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html

于 2012-11-28T23:48:00.377 に答える