有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    首先,不可能将映射声明为接收:HashMAP<Integer,ArrayList<String>> 并给它加上一个列表参数:map.put(1, list1), 即使Arraylist是一个列表,也可以查看java泛型来理解为什么它在所有^{中都被禁止

    我测试了您的代码,即使您为变量设置了一个新实例: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));
    

    威尔回答:“猫狗”