gpt4 book ai didi

java - 克隆列表并修改元素的属性以列表在 Java 中不起作用

转载 作者:行者123 更新时间:2023-12-02 09:28:49 25 4
gpt4 key购买 nike

我尝试克隆一个数组列表,这样就会创建两个列表。之后,我尝试修改其中一个列表中元素的属性。当我比较列表时,对于相同的结果,它应该给我错误的结果,但它却是正确的。我认为这与元素或列表的指针有关。有什么办法可以解决这个问题吗?

我的代码是这样的:

    List<UnifiedBucket> ubsCopy = new ArrayList<>(ubs);
ubsCopy.get(14).setRawPolicy(null);
UnifiedBucket ub1 = ubs.get(14);
UnifiedBucket ub2= ubsCopy.get(14);
System.out.println(ub1 == ub2);
System.out.println(ub1.getRawPolicy().equals(ub2.getRawPolicy()));

最佳答案

你想要的是深拷贝,但构造函数做了浅拷贝,看看public ArrayList(Collection c)

如果你想进行深度复制,请在 ArrayList 上使用迭代器,如下所示:

    List<UnifiedBucket> UnifiedBucketClone = new ArrayList<>();

Iterator<UnifiedBucket> iterator = ubs.iterator();
while(iterator.hasNext()){
UnifiedBucketClone .add((UnifiedBucket) iterator.next().clone());
}

关于java - 克隆列表并修改元素的属性以列表在 Java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136645/

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