Java Arraylist清除: how clear() works

标签 java arraylist

我有一个二维对象列表 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/

相关文章:

java - 使用 list 的类路径顺序

java - Android 崩溃 onCreate() - Fragment 无法转换为 androidx.navigation.fragment.NavHostFragment

java - 如何一次检查多个变量?

c# - 从数组列表中获取字典

java - 使用数组列表提取数据时尝试在空对象引用上调用虚拟方法 'java.lang.String'

java - 一个 webapp 有两个独立的 Spring 上下文

java - GridBagLayout 的奇怪行为

java - StAX - XMLEventReader 意外行为

java - 检索 JList 项的数组数据

java - 将字符串转换为数组