1. ホーム
  2. java

Java map.get(key) - 自動的にput(key)を行い、keyが存在しない場合はreturnする?

2023-10-11 07:06:13

質問

次のパターンにうんざりしています。

value = map.get(key);
if (value == null) {
    value = new Object();
    map.put(key, value);
}

この例は、多次元構造を表現するためにマップをネストさせたときに書かなければならない余分なコードの表面を削ったにすぎません。

これを回避するためにどこかに何かが存在すると確信していますが、ググっても関連するものは見つかりませんでした。何か提案はありますか?

どのように解決するのですか?

その

java.util.concurrent.ConcurrentMap 

そして、Java 8からは

Java.util.Map

があります。

putIfAbsent(K key, V value) 

は、keyにマップされた値を返すか、与えられた値と、keyにマップされた値がない場合はnullを挿入します。

もし、値の遅延評価が必要であれば

computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)