在Java中将流转换为集合

下面给出了一些在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() 方法被使用。

在Java中将集合转换为流

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享