Java Stream转换为Set

Java Stream转换为Set

下面给出了一些方法,可以用来将Java中的Stream转换为Set。

方法1:使用收集器

collect( Collector.toSet()) 方法从流中获取元素并将其存储在一个集合中。 collect(Collector.toSet()) 将流中的元素收集成一个集合。

Stream.collect()方法可以用来收集一个容器中的流元素。由Collectors.toSet()返回的Collector可以被传递,将流中的元素累积到一个新的Set中。

// 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()转换为Set。使用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

注意: 如果Stream是并行的,那么使用forEach()方法,元素可能不会按原来的顺序被处理。为了保持原来的顺序,可以使用forEachOrdered()方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程