gpt4 book ai didi

java - 将一个值放入 Java 中的映射中*而不*更新现有值(如果存在)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:31 24 4
gpt4 key购买 nike

我想实现以下功能:

if (!map.contains(key)) {
map.put(key, val);
}

更新:我们假设它不是 HashMap,因此该映射被实现为某种树。

但是请注意,它的效率有点低,因为如果我们进入 if ,我们实际上会搜索 map 两次。我实际上想做这样的事情:

map.put_if_new_key(key, val);

知道如何用 Java 实现吗?

最佳答案

如果您希望在绝大多数时间插入新元素。

ValType temp = map.put(key, val);
if(temp != null)
map.put(key, temp);

总的来说,我认为这不是一个好主意,但如果您可以充分推理您的用例,则值得考虑。

再考虑一下,如果您可以使用特定的 map 实现而不仅仅是 map 接口(interface),那么您可以使用 NavigableMap 来做到这一点。

Map sub = map.subMap(key, true, key, true);
if (!sub.contains(key)) {
sub.put(key, val);
}

由于子树的大小为 0 或 1 个节点,因此无需重复工作。

关于java - 将一个值放入 Java 中的映射中*而不*更新现有值(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com