如何通过不真正更新str1和str来更新唯一的str2?为什么str2中的更改是在更新str1和str?是因为对象引用吗?
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class test {
List<HashMap<String, String>> str;
public static void main(String[] args) {
Map<String, String> hmap = new HashMap<String, String>();
hmap.put("1", "s1");
hmap.put("2", "s2");
test testobj = new test();
testobj.str = new ArrayList<HashMap<String, String>>();
testobj.str.add((HashMap<String, String>) hmap);
testing(testobj.str);
}
static void testing(List<HashMap<String, String>> str) {
List<HashMap<String, String>> str2 = new ArrayList<HashMap<String, String>>();
List<HashMap<String, String>> str1 = str;
str2.add(str1.get(0));
str2.get(0).put("1", "new");
System.out.println(str);
System.out.println(str1);
System.out.println(str2);
}
}发布于 2018-04-18 09:58:48
您必须创建原始List的副本,如下所示:
List<HashMap<String, String>> str1 = new ArrayList<>(str);这将创建一个包含原始List中的所有元素的新ArrayList。这样,您将有两个单独的列表,其中包含其自己的元素。
https://stackoverflow.com/questions/49889776
复制相似问题