我有一个二维对象列表 mypath List<List<Object>> mypath = new ArrayList<List<Object>>();
。假设我有以下代码行
mypath.add(temppath);
System.out.println("mypath: "+mypath.get(mypath.size()-1));
temppath.clear();
System.out.println("mypath: "+mypath.get(mypath.size()-1));
我从第一个打印语句中看到一个对象列表,但从第二个打印语句中看到一个空列表。当我清除临时路径时,我的路径的该元素也会被清除。有办法规避这个问题吗?我可以清除 temppath,而不清除 mypath 的最后一个元素吗?
最佳答案
将 temppath 添加到 mypath 时,您不会创建新对象,而是添加对现有对象的引用。因此,您对该对象所做的一切都会反射(reflect)在引用它的任何地方。
此问题的一个可能的解决方案是创建 temppath 的副本并将其添加到 mypath。
关于Java Arraylist清除: how clear() works,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19578143/