复制设置Java

SNp*_*Npn 80 java copy set

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

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

tempList = itemList;
Run Code Online (Sandbox Code Playgroud)

或者您是否必须逐个遍历集合并逐个复制它们?

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元素。


Yos*_*ari 6

使用Java 8,您可以使用streamcollect复制项目:

Set<Item> newSet = oldSet.stream().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

  • 你可以...但是如果你只是复制一个集合,复制构造函数(等)应该更有效. (6认同)