当另一个等于它的ArrayList被更改时,原始ArrayList被修改

时间:2014-11-03 22:53:45

标签: java arraylist

我正在使用ArrayList作为名为wordList的程序。我有一个单独的ArrayList用于另一种方法,称为smallestWords。我执行“smallestWords = arrayList”以获得wordList的副本,我可以在不影响原始内容的情况下进行修改。但是,每当我修改smallestWords时,它也会修改wordList,这会导致我出现问题。我假设它是因为设置smallestWords等于wordList只是将它设置为等于该内存位置,因为它是一个抽象数据类型,并通过引用传递。

我怎样才能这样做,以便获得数据的副本而无法修改它?如果你想查看该程序的实际代码,请询问。

2 个答案:

答案 0 :(得分:2)

您没有使用smallestWords = arrayList进行复制。您只是将ArrayList分配给smallestWords

您应该使用以下方法复制:

List<String> smallestWords = new ArrayList<String>(arrayList);

答案 1 :(得分:0)

如果您想制作ArrayList的副本,可以使用:

ArrayList smallestWords = new ArrayList(wordList);

(根据需要插入通用类型参数)