java - 添加 ArrayList 后清除某些内容也会清除 ArrayList

标签 java arraylist

我有一个包含Arraylists的ArrayList,这是代码:

ArrayList<ArrayList<String>> results = new ArrayList<ArrayList<String>>();
ArrayList<String> row = new ArrayList<String>();

我想要的是 results ArrayList 包含 row ArrayList。我认为在向 ArrayList 添加一些内容后,它会被硬编码到该 ArrayList 中。但看来 ArrayList 的内容仍然与我添加到其中的变量的内容相关,因为当我运行此代码时:

row.add("ROW 1 ITEM 1");
row.add("ROW 1 ITEM 2");
row.add("ROW 1 ITEM 3");
row.add("ROW 1 ITEM 4");
row.add("ROW 1 ITEM 5");
row.add("ROW 1 ITEM 6");
results.add(row);
row.clear();
log(results.toString());

控制台中记录的结果是[[]]。有什么办法可以这样使用它吗?

最佳答案

是的,Java 使用引用。如果您对引用 ArrayList 的引用调用 clear,则引用完全相同内存的其他引用将看到相同的内容。 ArrayList 为空。

如果您想保留内容,请将其保存到不同的 ArrayList 实例。

关于java - 添加 ArrayList 后清除某些内容也会清除 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47477903/

相关文章:

java - 我可以定义扩展接口(interface)的 ArrayLists 和其他数据结构吗?

java - 将数组添加到 ArrayList

java - JMC maxage/maxsize 不起作用

Java 从数组中获取范围

java - Intent 构造函数的上下文参数

java - 错误: cannot find symbol

java - 将模式恢复为 CheckBox 的 ArrayList?

java - ArrayList 的排序复制构造

java - 使用 GWT ScriptInjector 加载脚本时如何设置 CacheHeaders?

java - 使对象的字段对于数组列表中存储的每个对象都是唯一的