gpt4 book ai didi

java检查双嵌套 HashMap 中的键是否存在

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:40 24 4
gpt4 key购买 nike

我有一个 HashMap 的双重嵌套 HashMap ,想检查键是否存在并放置新值。目前我正在嵌套 if 语句以检查每个级别的键是否存在。有没有更有效的编码方式?

HashMap<Foo1, HashMap<Foo2, HashMap<Foo3, Double>>> my_map = new HashMap<Foo1, HashMap<Foo2, HashMap<Foo3, Double>>>();

if (my_map.containsKey(foo1key)) {

if (my_map.get(foo1key).containsKey(foo2key)) {

if (my_map.get(foo1key).get(foo2key).containsKey(foo3key)) {

return my_map.get(foo1key).get(foo2key).get(foo3key);
}
}
}

double foo3key = getValue();

// do the above steps again to put foo3key into map.

最佳答案

最有效的方法(假设您的值始终为非空)如下:

HashMap<Foo2, HashMap<Foo3, Double>> map2 = my_map.get(foo1Key);
if(map2!=null) {
HashMap<Foo3, Double> map3 = map2.get(foo2Key);
if (map3!=null) {
Double value = map3.get(foo3Key);
if (value!=null) {
return (double)value;
} else {
// add value to map3, or whatever
}
}
}

这利用了以下技术:

  • 如果 get() 返回 null,您就知道该键不存在(因为不允许使用 null 值)
  • 保存上一次get的返回值,以便下次查找,这样就不需要链式get在一起了

虽然这有点困惑 - 如果您经常进行这种操作,那么我建议将其分解为一个单独的函数,这样您就可以:

double value = getNestedValue(my_map,foo1Key,foo2Key,foo3Key);

关于java检查双嵌套 HashMap 中的键是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729597/

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