将元素添加到List <list <string>&gt;从数组列表中

时间:2016-06-03 12:03:01

标签: java arrays list arraylist

我想将数据的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.我该怎么办?

为我可能令人困惑的解释道歉。

1 个答案:

答案 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);