Ste*_*n C 148
另一种方法是使用复制构造函数:
Collection<E> oldSet = ...
TreeSet<E> newSet = new TreeSet<E>(oldSet);
Run Code Online (Sandbox Code Playgroud)
或者创建一个空集并添加元素:
Collection<E> oldSet = ...
TreeSet<E> newSet = new TreeSet<E>();
newSet.addAll(oldSet);
Run Code Online (Sandbox Code Playgroud)
与clone这些不同,允许您使用不同的集合类,不同的比较器,甚至可以填充其他(非集合)集合类型.
Ole*_*hov 10
从Java 10开始:
Set<E> oldSet = Set.of();
Set<E> newSet = Set.copyOf(oldSet);
Run Code Online (Sandbox Code Playgroud)
Set.copyOf()返回Set包含给定元素的不可修改的Collection。
给定值Collection不能是null,并且它不能包含任何null元素。
使用Java 8,您可以使用stream和collect复制项目:
Set<Item> newSet = oldSet.stream().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)