Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ArrayList复制到Hashmap并重置ArrayList_Java_Arraylist_Hashmap - Fatal编程技术网

Java 将ArrayList复制到Hashmap并重置ArrayList

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

我正在尝试将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);
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类型。