Java 将ArrayList复制到Hashmap并重置ArrayList
我正在尝试将ArrayList添加到HashMap,稍后将ArrayList引用到其他对象 但是当我更改ArrayList的内容时,它也会反映在HashMap值中 例如:Java 将ArrayList复制到Hashmap并重置ArrayList,java,arraylist,hashmap,Java,Arraylist,Hashmap,我正在尝试将ArrayList添加到HashMap,稍后将ArrayList引用到其他对象 但是当我更改ArrayList的内容时,它也会反映在HashMap值中 例如: HashMap<Interger, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>(); List<String> list1 = new ArrayLis
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);
HashMap map=newhashmap();
List list1=新的ArrayList();
清单1.添加(“cat”);
地图放置(1,列表1);
list1=新的ArrayList();
清单1.添加(“狗”);
地图放置(2,列表1);
现在地图中只有“狗”条目,它确实有“猫”条目
我不想创建一个具有新名称(如list2)的ArrayList来保存“dog”条目
我在循环中使用它,所以我只需要一个ArrayList变量,如…list1。。。我想把数据放到HashMap中,然后继续
list1=新的ArrayList();
并在其中存储新值并将其放入HasnMap
如何仅使用一个ArrayList变量将值正确地放入HashMap?首先,不可能将该映射声明为接收:
HashMap
并为其添加一个列表参数:map.put(1,list1)
,
即使Arraylist是一个列表,也可以查看java泛型,了解为什么在所有泛型中都禁止它
我测试了您的代码,即使您为变量设置了一个新实例:list1
,
之前添加到映射中的实例将不会从中删除:
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));
ArrayList list1=新的ArrayList();
清单1.添加(“cat”);
地图放置(1,列表1);
list1=新的ArrayList();
清单1.添加(“狗”);
地图放置(2,列表1);
System.out.println(map.get(1.get(0)+“”+map.get(2.get(0));
将返回:`cat dog'使用clone()
或在添加时添加对new ArrayList(list1)
的调用。按原样,您正在添加相同的引用。否。在您的示例中,映射包含{1:[“cat”]、2:[“dog”]}
我怀疑您的实际代码包含list1.clear()
,或者类似的代码。但是它不工作。integer
不是标准的Java类型。