在Java中将列表转换为集的最简单的方法是什么?
当前回答
在Java 10中,您现在可以使用Set#copyOf轻松地将List<E>转换为不可修改的Set<E>:
例子:
var set = Set.copyOf(list);
请记住,这是一个无序操作,不允许使用空元素,因为它将抛出NullPointerException异常。
如果您希望它是可修改的,那么只需将它传递给构造函数一个Set实现。
其他回答
Set<E> alphaSet = new HashSet<E>(<your List>);
或者完整的例子
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListToSet
{
public static void main(String[] args)
{
List<String> alphaList = new ArrayList<String>();
alphaList.add("A");
alphaList.add("B");
alphaList.add("C");
alphaList.add("A");
alphaList.add("B");
System.out.println("List values .....");
for (String alpha : alphaList)
{
System.out.println(alpha);
}
Set<String> alphaSet = new HashSet<String>(alphaList);
System.out.println("\nSet values .....");
for (String alpha : alphaSet)
{
System.out.println(alpha);
}
}
}
如果使用Eclipse Collections:
MutableSet<Integer> mSet = Lists.mutable.with(1, 2, 3).toSet();
MutableIntSet mIntSet = IntLists.mutable.with(1, 2, 3).toSet();
MutableIntSet接口扩展了java.util.Set,而MutableIntSet接口没有。您还可以使用Sets工厂类将任何Iterable转换为Set。
Set<Integer> set = Sets.mutable.withAll(List.of(1, 2, 3));
在Eclipse Collections中有更多关于可变工厂的解释。
如果你想从List中获得一个ImmutableSet,你可以像下面这样使用Sets工厂:
ImmutableSet<Integer> immutableSet = Sets.immutable.withAll(List.of(1, 2, 3))
注意:我是Eclipse Collections的提交者
如果你使用Guava库:
Set<Foo> set = Sets.newHashSet(list);
或者,更好:
Set<Foo> set = ImmutableSet.copyOf(list);
可以将List<>转换为Set<>
Set<T> set=new HashSet<T>();
//Added dependency -> If list is null then it will throw NullPointerExcetion.
Set<T> set;
if(list != null){
set = new HashSet<T>(list);
}
Java——addAll
set.addAll(aList);
Java-新对象
new HashSet<>(list)
java 8
list.stream().collect(Collectors.toSet());
使用Guva
Sets.newHashSet(list)
Apache Commons
CollectionUtils.addAll(targetSet, sourceList);
Java 10
var set = Set.copyOf(list);
推荐文章
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- Java Regex捕获组
- 从另一个列表id中排序一个列表