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,则表示该密钥不存在(因为不允许使用空值) 这有点乱 – 如果你做了很多这样的操作,那么我建议把它分解成一个单独的函数,这样你就可以这样做: double value = getNestedValue(my_map,foo1Key,foo2Key,foo3Key); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |