我有一个包含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/