我想将数据副本添加到我的列表中,但当我使用 .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 个元素重新填充它,然后将其添加到列表的下一个索引。问题是一旦我清除它,数据就会从列表中删除。如果我不清除它,列表的每个索引处都有 6 个元素,而实际上应该只有 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);
关于java - 从数组列表添加元素到 List<List<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613898/