在Java中将流转换为集合

在Java中将流转换为集合

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

方法1:使用Collectors

Stream collect()方法将流中的元素提取出来并存储在一个集合中。 collect(Collector.toSet()) 将流中的元素收集到一个Set中。

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

// Java代码将
// Stream转换为Set使用Collectors
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.Collectors;
  
class GFG {
      
    // Driver code
    public static void main(String[] args) {
      
    // 创建一个整数流
    Stream<Integer> stream = Stream.of(-2, -1, 0, 1, 2);
      
    // 使用Stream.collect()将流的元素收集到一个集合中。
    Set<Integer> streamSet = stream.collect(Collectors.toSet());
      
    // 显示元素
    streamSet.forEach(num -> System.out.println(num));
    }
}
-1
0
-2
1
2

方法2:先将流转换为数组,再将数组转换为集合

将流转换为Set的问题可以分为两部分:

1)将流转换为数组
2)将数组转换为Set
// Java代码将
// Stream转换为Set使用分而治之法
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.Collectors;
  
class GFG {
      
    // Driver code
    public static void main(String[] args) {
      
    // 创建一个字符串流
    Stream<String> stream = Stream.of("G", "E", "K", "S");
      
    // 将流转换为数组
    String[] arr = stream.toArray(String[] :: new);
      
    // 创建一个HashSet
    Set<String> set = new HashSet<>();
      
    // 将数组转换为Set
    Collections.addAll(set,arr);
      
    // 显示元素
    set.forEach(str -> System.out.println(str));
    }
}
S
E
G
K

注意:输出是随机的,因为HashSet按生成的哈希值的顺序获取输入。

方法3:使用forEach

可以使用forEach()将Stream转换为Set。使用forEach()方法循环遍历流中的所有元素,然后使用set.add()将每个元素添加到空集中。

// Java代码将
// Stream转换为Set使用forEach
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.Collectors;
  
class GFG {
      
    // Driver code
    public static void main(String[] args) {
      
    // 创建一个整数流
    Stream<Integer> stream = Stream.of(5, 10, 15, 20, 25);
  
    // 创建一个HashSet
    Set<Integer> set = new HashSet<>();
      
    // 使用set.add()将流的元素添加到空集中
    stream.forEach(set::add);
      
    // 显示元素
    set.forEach(num -> System.out.println(num));
    }
}
20
5
25
10
15

注意: 如果流是并行的,那么使用forEach()方法时元素的处理顺序可能不是原始顺序。为了保留原始顺序,应该使用forEachOrdered()方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程