P b*_*sak 2 java collections reference list
我有以下LinkHashMap,
LinkedHashMap<String, ArrayList<String>> test1=new ...
Run Code Online (Sandbox Code Playgroud)
在循环中,我像这样分配键值对,
ArrayList<String> temp=new ...
//start iteration
temp.add("some strings")
test1.put("some string", temp);
temp.clear()//temp is cleared for next iteration
Run Code Online (Sandbox Code Playgroud)
这里temp是我之前创建的临时列表,并为其添加内容.但问题是,当我清除temp时,传递给test1的temp也被清除,这意味着它被引用复制.如何在test1中使用temp仍然保持其引用.我知道这是一个基本概念,但我是java的新手,并没有完成它的所有功能.
那是因为你并没有真正复制List,temp.您正在复制指针(Java术语中的"引用").
这里有两个简单的解决方案:
List使用的实际副本new ArrayList<String>(temp)作为您在地图中存储的内容.temp.clear(),做temp = new ArrayList<String>().第二种选择是最好的,因为它没有复制任何东西; 它只是用新鲜的方式替换参考ArrayList.