登录
首页 >  文章 >  java教程

Java复制集合并保留原始引用的技巧

时间:2025-11-05 09:21:29 290浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Java复制集合并保留原始引用的方法》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

浅复制是创建新集合并保留原集合对象引用,修改元素会影响原对象。使用构造函数 new ArrayList(original) 或 clone() 实现,两者均不复制对象本身,仅分离集合结构,添加/删除元素互不影响,但对象共享。Collections.copy() 不适用此场景,因需目标集合预先存在且大小足够。Set 类型可用 new HashSet<>(originalSet) 等构造函数实现相同效果。所有方式均为浅复制,对象引用不变。

在Java中如何复制集合但保留原始引用

在Java中复制集合但保留原始引用,意思是创建一个新集合,其中包含与原集合相同的对象引用(不是对象副本),这样对集合结构的操作互不影响,但修改集合中的元素会影响原始对象。这种复制称为浅复制(shallow copy)。

使用构造函数进行浅复制

最简单的方式是使用目标集合类的构造函数,传入原始集合:

示例:
List original = new ArrayList();
original.add(new StringBuilder("Hello"));
original.add(new StringBuilder("World"));

// 浅复制:新集合引用相同的对象
List copied = new ArrayList(original);

// 修改复制集合中的元素会影响原始集合中的对象
copied.get(0).append(" Java");
System.out.println(original.get(0)); // 输出: Hello Java

说明:两个集合是独立的(添加/删除元素互不影响),但它们持有的对象是同一个实例。

使用 clone() 方法(注意集合类型)

部分集合类实现了 Cloneable 接口,例如 ArrayListLinkedList,可以调用 clone():

ArrayList cloned = (ArrayList) original.clone();

注意:clone() 返回的是 Object,需要强制转换。而且该方法也只做浅复制。

使用 Collections.copy()?注意区别

Collections.copy() 不是用来创建新集合的,它要求目标集合已有足够空间,只是把元素复制进去。一般不用于此场景。

自定义集合或不可变集合的处理

如果使用 Set 或其他类型:
  • HashSet setCopy = new HashSet(originalSet);
  • LinkedHashSet、TreeSet 同理,构造函数接受 Collection
这些方式都保持原始对象引用不变。

基本上就这些。只要用集合的构造函数传入原集合,就能实现“复制集合但保留原始引用”的效果。关键是理解这是浅复制,对象本身没被拷贝,只是集合结构分离了。

终于介绍完啦!小伙伴们,这篇关于《Java复制集合并保留原始引用的技巧》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>