加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java检查双嵌套哈希映射中的密钥存在

发布时间:2020-12-15 02:34:27 所属栏目:Java 来源:网络整理
导读:我有一个双嵌套的hashmaps hashmap,想要检查密钥存在并放置新值.目前我正在嵌套if语句来检查每个级别的密钥存在.有没有更有效的方法来编码? HashMapFoo1,HashMapFoo2,HashMapFoo3,Double my_map = new HashMapFoo1,Double();if (my_map.containsKey(foo1key
我有一个双嵌套的hashmaps hashmap,想要检查密钥存在并放置新值.目前我正在嵌套if语句来检查每个级别的密钥存在.有没有更有效的方法来编码?

HashMap<Foo1,HashMap<Foo2,HashMap<Foo3,Double>>> my_map = new HashMap<Foo1,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.

解决方法

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

HashMap<Foo2,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,则表示该密钥不存在(因为不允许使用空值)
>保存上一个get的返回值以进行下一次查找,这样您就不需要链接到一起了

这有点乱 – 如果你做了很多这样的操作,那么我建议把它分解成一个单独的函数,这样你就可以这样做:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读