我想将数据的COPIES添加到我的列表中,但是当我使用.add时,它会添加引用而不是副本。我试着解释一下我的意思。
List<List<String>> formattedTempMatches = new ArrayList<>();
ArrayList<String> rowFormattedMatches = new ArrayList<>();
rowFormattedMatches.add(matchesArray[0]);
rowFormattedMatches.add(matchesArray[1]);
rowFormattedMatches.add(matchesArray[2]);
formattedTempMatches.add(rowFormattedMatches);
//rowFormattedMatches.clear();
rowFormattedMatches.add(matchesArray[3]);
rowFormattedMatches.add(matchesArray[4]);
rowFormattedMatches.add(matchesArray[5]);
formattedTempMatches.add(rowFormattedMatches);
我已经在循环之外编写了我的代码,试图更好地解释自己。我想向ArrayList添加3个元素(其元素来自普通数组)然后将该ArrayList添加到列表列表中。当ArrayList被添加到列表中时,我想清除它并用另外3个元素重新填充它,然后将它添加到List的下一个索引。问题是,一旦我清除它,数据将从列表中删除。如果我不清除它,那么列表中每个索引有6个元素,只有3个元素应该是3.我该怎么办?
为我可能令人困惑的解释道歉。
答案 0 :(得分:3)
clear()
的电话会清空该列表。当您为每次迭代使用相同的实例时,这将不起作用。你可以做什么而不是清除列表是创建一个新实例:
List<List<String>> formattedTempMatches = new ArrayList<>();
ArrayList<String> rowFormattedMatches = new ArrayList<>();
rowFormattedMatches.add(matchesArray[0]);
rowFormattedMatches.add(matchesArray[1]);
rowFormattedMatches.add(matchesArray[2]);
formattedTempMatches.add(rowFormattedMatches);
rowFormattedMatches = new ArrayList<>(); // new instance of an empty list
rowFormattedMatches.add(matchesArray[3]);
rowFormattedMatches.add(matchesArray[4]);
rowFormattedMatches.add(matchesArray[5]);
formattedTempMatches.add(rowFormattedMatches);