复制集 Java

2022-08-31 11:35:05

有没有办法复制?也就是说,是否有可能去TreeSet

Set <Item> itemList;
Set <Item> tempList;

tempList = itemList;

还是您必须以物理方式遍历这些集合并逐个复制它们?


答案 1

执行此操作的另一种方法是使用复制构造函数

Collection<E> oldSet = ...
TreeSet<E> newSet = new TreeSet<E>(oldSet);

或者创建一个空集并添加元素:

Collection<E> oldSet = ...
TreeSet<E> newSet = new TreeSet<E>();
newSet.addAll(oldSet);

与这些不同,允许您使用不同的集合类,不同的比较器,甚至从其他(非集合)集合类型填充。clone


请注意,复制 Set 的结果是一个新 Set,其中包含对作为元素的对象(如果是原始 Set)的引用。不会复制或克隆元素对象本身。这符合 Java 集合 API 的设计工作方式:它们不复制元素对象。


答案 2

Java 10 开始

Set<E> oldSet = Set.of();
Set<E> newSet = Set.copyOf(oldSet);

Set.copyOf() 返回一个不可修改的,其中包含给定的元素。SetCollection

给定的不能是 ,并且不能包含任何元素。Collectionnullnull