gpt4 book ai didi

Java-如何正确使用list.copyOf?

转载 作者:行者123 更新时间:2023-11-30 05:45:49 24 4
gpt4 key购买 nike

我的问题是我需要复制一个列表,但需要复制一个深拷贝。当我修改列表a时,我不想修改列表b 。我使用 JDK11,所以我可以使用 list.copyOf但当我修改 a 时使用它, b也被修改。我做错了什么吗?

b = List.copyOf(a);
System.out.println("A start:" + b.get(2).getSeating());
System.out.println("B start:" + b.get(2).getSeating());
a.get(2).setSeating(27);
System.out.println("Hi there" );
System.out.println("A end:" + a.get(2).getSeating());
System.out.println("B end:" + b.get(2).getSeating());

该分配的输出:

The output of that assignation

最佳答案

根据 documentation,copyOf 方法不会进行深层复制。它返回一个不可变的 View ,即只读列表。它不会复制列表中的元素。要进行深层复制,您基本上需要迭代集合并将元素一一深层复制到新集合中。在一般情况下这可能很棘手。有些对象支持克隆,其他对象有自定义复制方法,但在一般情况下,Java 没有始终有效的深度复制方法。

简而言之,解决方案会根据您列表中的内容而有所不同。由于它似乎是应用程序中的自定义对象,因此最简单的方法可能是迭代列表并使用您在类中提供的复制构造函数或克隆方法将实例复制到新列表。

关于Java-如何正确使用list.copyOf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54851349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com