[英]java checking for key existence in double nested hashmaps
我有一個雙嵌套的hashmaps 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.
最有效的方法(假設您的值始終為非null)如下:
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
}
}
}
這利用了以下技術:
這有點亂 - 如果你做了很多這樣的操作,那么我建議把它分解成一個單獨的函數,這樣你就可以這樣做:
double value = getNestedValue(my_map,foo1Key,foo2Key,foo3Key);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.