首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >克隆列表并将元素的属性修改为list在Java中不起作用

克隆列表并将元素的属性修改为list在Java中不起作用
EN

Stack Overflow用户
提问于 2019-09-27 22:34:43
回答 1查看 53关注 0票数 0

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

我的代码是这样的:

代码语言:javascript
运行
复制
    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()));
EN

回答 1

Stack Overflow用户

发布于 2019-09-27 23:40:47

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

如果你想做一个深度拷贝,在ArrayList上使用迭代器,就像这样:

代码语言:javascript
运行
复制
    List<UnifiedBucket> UnifiedBucketClone = new ArrayList<>();

    Iterator<UnifiedBucket> iterator = ubs.iterator();
    while(iterator.hasNext()){
        UnifiedBucketClone .add((UnifiedBucket) iterator.next().clone());
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58136645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档