java将ArrayList复制到Hashmap并重置ArrayList
我试图将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);
现在地图上只有“狗”的条目,也有“猫”的条目
我不想创建一个新名称的ArrayList,比如list2来保存“dog”条目
我在循环中使用它,所以我只需要一个ArrayList变量,比如。。。清单1。。。我想把数据放到HashMap中,然后继续
list1=新的ArrayList(); 并在其中存储新值并将其放入HasnMap
如何仅使用一个ArrayList变量将值正确地放入HashMap
# 1 楼答案
首先,不可能将映射声明为接收:中都被禁止
HashMAP<Integer,ArrayList<String>>
并给它加上一个列表参数:map.put(1, list1)
, 即使Arraylist是一个列表,也可以查看java泛型来理解为什么它在所有^{我测试了您的代码,即使您为变量设置了一个新实例:
list1
, 之前添加到map
的实例不会从中删除:威尔回答:“猫狗”