我正在尝试将一个ArrayList添加到HashMap中,稍后我将ArrayList引用到另一个对象。
但是当我更改ArrayList的内容时,它也会反映在HashMap值中
示例:
HashMap<Interger, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("cat");
map.put(1, list1);
list1 = new ArrayList<String>();
list1.add("dog");
map.put(2, list1);
现在地图上只有#34;狗&#34;进入它,它确实有&#34; cat&#34;条目。
我不想创建一个名为list2的新名称的ArrayList来保存&#34; dog&#34;条目。
我在循环中使用它,所以我只需要一个像... list1一样的ArrayList变量...我想把数据放到HashMap中,继续....
list1 = new ArrayList(); 并在其中存储新值并将其放入HasnMap。
如何通过仅使用一个ArrayList变量将值正确地放入HashMap?
答案 0 :(得分:1)
首先,无法将地图声明为接收:HashMAP<Integer,ArrayList<String>>
并为其添加一个列表参数:map.put(1, list1)
,
即使Arraylist 是列表,也请查看 java generics ,以了解为什么在generics
中禁止它。
我测试了您的代码,即使您为变量设置了一个新实例:list1
,
之前添加到map
的实例不会从中删除:
ArrayList<String> list1 = new ArrayList<String>();
list1.add("cat");
map.put(1, list1);
list1 = new ArrayList<String>();
list1.add("dog");
map.put(2, list1);
System.out.println(map.get(1).get(0)+" "+map.get(2).get(0));
将返回:“猫狗”