最初,我将两个具有相同值的条目放入一个hashmap中.两个条目的值本身就是一个映射.这些条目具有不同的键.
现在我想将新值放入第一个条目的映射(值)中.问题是只要我更改第一个条目,第二个条目的映射(其值)也会更改.两个不同的键以某种方式引用相同的值(map).
我应该怎么做才能相互分别编辑最初相同值的值?
基本上,问题是您没有将两张地图放入地图中,而是将两个引用放在同一个地图上.
要在外部地图中拥有两个独立版本的内部地图,您需要在第二次放置之前复制它.
您应该能够HashMap使用其clone方法制作副本.请注意,虽然这确实可以获得两个不同的地图,但两个地图中的实际值是相同的.这意味着如果复制的地图内容是可变的并且您更改它们,它们仍将在两个地方都发生变化.
澄清:
HashMap<Object, Object> map1 = new HashMap<Object, Object>()// This is your original map.
map1.put("key", mutableObject)
HashMap<Object, Object> map2 = map1.clone();
map2.put("something", "something else");// map1 is unchanged
map2.get("key").change();// the mutable object is changed in both maps.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6509 次 |
| 最近记录: |