如何将 List<Integer> 的值(而不是引用)复制到另一个列表中?

2022-09-01 15:18:14

也就是说,在不引用同一对象的情况下,我需要将一个列表的元素的值复制到另一个列表中。以下是列表:

List<Integer> listA = new ArrayList<Integer>();
List<Integer> ListB = new ArrayList<Integer>();

listA = (added some values);

listB = (do what?)...

PS.我为初学者的问题道歉,但我从来没有做过这样的事情。


答案 1

绝对没有理由制作整数的副本。整数是不可变的类。这意味着其值是在创建 Integer 实例时设置的,并且永远不会更改。因此,整数引用可以由多个列表和线程共享而不会担心,因为任何人都无法更改其值。因此,你的问题没有真正的意义。

要创建一个包含与另一个列表相同的整数的 ArrayList,只需使用以下代码:ba

List<Integer> b = new ArrayList<Integer>(a);

当然,整数不会被克隆,但这是一件好事,因为克隆它们是完全不必要的。


答案 2

您可以尝试查看 Collections.copy 方法:

公共静态 void copy(List dest, List src)

将所有元素从一个列表复制到另一个列表中。操作完成后,目标列表中每个复制元素的索引将与源列表中的索引相同。目标列表的长度必须至少与源列表一样长。如果时间较长,则目标列表中的其余元素不受影响。此方法在线性时间中运行。

参数:dest - 目标列表。src - 源列表。

注意:上述内容应该适用于简单的数据类型,例如整数,但是,如果您有自己的对象,而这些对象可能会反过来引用其他对象,则必须循环访问每个对象并单独复制它。


推荐