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

新手上路,请多包涵

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

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

listA = (added some values);

listB = (do what?)...

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

原文由 sandalone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 470
2 个回答

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

public static void copy(List dest, List src)

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

参数: dest - 目的地列表。 src - 源列表。

注意:以上应该适用于简单的数据类型,例如整数,但是,如果您有自己的对象,而这些对象又可能引用其他对象,您将不得不遍历每个对象并单独复制它。

原文由 npinti 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

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

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题