Java map.get(key) - 自动执行 put(key) 并在键不存在时返回?

新手上路,请多包涵

我厌倦了以下模式:

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

当您使用嵌套映射来表示多维结构时,此示例仅触及要编写的额外代码的表面。

我确定某处存在可以避免这种情况的方法,但我的谷歌搜索没有任何相关结果。有什么建议么?

原文由 Sridhar Sarnobat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

java.util.concurrent.ConcurrentMap

来自 Java 8

 Java.util.Map

putIfAbsent(K key, V value)

它返回现有值,如果该值为空,则插入给定值。因此,如果键不存在值,则返回 null 并插入给定值,否则返回 现有值

如果您需要对价值进行惰性评估

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

原文由 Roger Lindsjö 发布,翻译遵循 CC BY-SA 4.0 许可协议

Java 8 为 Map 添加了不错的方法: computecomputeIfPresentcomputeIfAbsent

实现你所需要的:

 Object existingOrCreated = map.computeIfAbsent(key, (k) -> new Object());

原文由 iTake 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题