修改HashMaps的HashMap中的元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改HashMaps的HashMap中的元素相关的知识,希望对你有一定的参考价值。
说我有
HashMap<String, HashMap<String, Integer>> mapOfMaps = new HashMap<String, HashMap<String, Integer>>();
然后我访问一个元素作为
Integer foo = mapOfMaps.get('what').get('ever');
最后我改变了foo
的值,例如:
foo++;
然后,如果我想在hashmap中看到更新的值,我应该做一些事情
HashMap<String, Integer> map = mapOfMaps.get('what');
然后put
新的价值为
map.put('ever', foo);
这是有效的,如果我访问mapOfMaps.get('what').get('ever')
我会得到更新的值。但我的问题是:为什么我没有put
map
进入mapOfMaps
? (即:)
mapOfMaps.put('what', map);
答案
你的变量map
已经指的是HashMap
中已经存在的同一个mapOfMaps
对象。
HashMap mapOfMaps:
"what" -> (HashMap) <- map
"ever" -> (Integer) 1 <- foo
当你检索值时,foo
引用存储在地图中的Integer
值,直到你执行foo++
。因为Integer
s是不可变的,所以foo++
真正做的就是取消它,增加它,然后将它再次装入另一个Integer
。现在foo
指的是代表新值的另一个Integer
对象。
HashMap mapOfMaps:
"what" -> (HashMap) <- map
"ever" -> (Integer) 1 foo -> 2
这就解释了为什么你需要put
将值2重新放回map
。
但map
未被修改为引用另一个HashMap;它仍然指的是仍然在HashMap
的mapOfMaps
。这意味着它不需要是put
回到mapOfMaps
像2
需要重新put
回到map
。
以上是关于修改HashMaps的HashMap中的元素的主要内容,如果未能解决你的问题,请参考以下文章