将值传递给java中的List

时间:2012-06-27 18:43:49

标签: java list

我有一个列表,我试图填写来自不同List的数字。但是,当我更改我复制的列表中的数字时,它会在另一个列表中更改它们。有没有办法阻止这种情况发生?

3 个答案:

答案 0 :(得分:4)

您需要将列表中的值复制到新列表中:

List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = new ArrayList<String>(list1); // copy the values of list1 into list2

这会将list1中的所有值复制到list2。然后,您可以在不修改list2的情况下对list1进行更改,反之亦然。


只是为了澄清:

那将做一个深层复制。但是,这不是深/浅复制的问题。这里的问题是OP正在将他的列表传递给另一种方法,然后惊讶地发现他的列表已经添加/删除了数字。

答案 1 :(得分:3)

两个列表包含对相同数字对象的引用。更改第一个列表中的数字,然后更改第二个列表引用的同一个对象。

要保留两个列表并单独复制数字,您需要复制列表,例如与Collections.copy

答案 2 :(得分:1)

您需要在列表的对象上执行 deep copy 。 使用Collections.copy(List1, List2);或编写自定义代码。