下面给出了一些在Java中可以用来将Stream转换为Set的方法。
null
方法1:使用收集器
Stream collect()方法从流中获取元素并将其存储在集合中。 collect(Collector.toSet()) 将元素从流收集到集合。
流动collect()方法可用于收集容器中的流元素。收集器返回的收集器。可以传递toSet(),将流的元素累积到一个新的集合中。
// Java code for converting // Stream to Set using Collectors import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Integers Stream<Integer> stream = Stream.of(- 2 , - 1 , 0 , 1 , 2 ); // Using Stream.collect() to collect the // elements of stream in a container. Set<Integer> streamSet = stream.collect(Collectors.toSet()); // Displaying the elements streamSet.forEach(num -> System.out.println(num)); } } |
输出:
-1 0 -2 1 2
方法2:将流转换为数组,然后设置
将流转换为集合的问题可分为两部分:
1) Convert Stream to an Array 2) Convert Array to a Set
// Java code for converting // Stream to Set using Divide // and Conquer import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Strings Stream<String> stream = Stream.of( "G" , "E" , "K" , "S" ); // Converting Stream into an Array String[] arr = stream.toArray(String[] :: new ); // Creating a HashSet Set<String> set = new HashSet<>(); // Converting Array to set Collections.addAll(set,arr); // Displaying the elements set.forEach(str -> System.out.println(str)); } } |
输出:
S E G K
注: 输出是随机的,因为HashSet以随机顺序将输入作为生成的哈希值。
方法3:使用forEach
流可以使用 forEach() .使用 forEach() 方法,然后使用set。add()将每个元素添加到一个空集。
// Java code for converting // Stream to Set using forEach import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Integers Stream<Integer> stream = Stream.of( 5 , 10 , 15 , 20 , 25 ); // Creating a HashSet Set<Integer> set = new HashSet<>(); // using set.add() to add elements // of stream into empty set stream.forEach(set::add); // Displaying the elements set.forEach(num -> System.out.println(num)); } } |
输出:
20 5 25 10 15
注: 若流是并行的,那个么元素可能不会使用 forEach() 方法为了维持原有秩序, forEachOrdered() 方法被使用。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END