使用泛型在Java中将 Set 转换为 Stream 的程序
Java Set 是Java.util 包的一部分,扩展了Java.util.Collection 接口。它不允许使用重复元素,并且最多只能容纳一个空元素。
Stream 是一系列支持各种方法的对象,这些方法可以流水线化以产生所需的结果。
以下是将Set 转换为 Stream的各种方法。
- 使用 Collection.stream() :此方法涉及使用 Collection.stream() 方法直接将 Set 转换为 Stream。
算法:
- 获取要转换的集合。
- 将集转换为流。这是使用 Set.stream() 完成的。
- 返回/打印流。
// Java Program to convert // Set to Stream in Java 8 import java.util.*; import java.util.stream.*; import java.util.function.*; class GFG { // Generic function to convert a set to stream private static
Stream convertSetToStream(Set set) { return set.stream(); } // Main method public static void main(String args[]) { // Create a set of String Set setOfInteger = new HashSet<>( Arrays.asList(2, 4, 6, 8, 10)); // Print the set of Integer System.out.println("Set of Integer: " + setOfInteger); // Convert Set of Stream Stream streamOfInteger = convertSetToStream(setOfInteger); // Print the Stream of Integer System.out.println("Stream of Integer: " + Arrays.toString( streamOfInteger.toArray())); } } 输出:Set of Integer: [2, 4, 6, 8, 10] Stream of Integer: [2, 4, 6, 8, 10]
- 使用 Predicate 过滤 Stream :在此方法中,使用 filter(Predicate) 方法返回由与给定谓词条件匹配的元素组成的流。功能接口谓词在Java.util 中定义。函数包,因此可以用作 lambda 表达式或方法引用的赋值目标。它提高了代码的可管理性,有助于分别对它们进行单元测试
算法:
- 获取要转换的集合。
- 通过使用预定义的静态方法或通过覆盖 Predicate 接口创建新方法来定义 Predicate 条件。在这个程序中,接口被覆盖以匹配以“G”开头的字符串。
- 将集转换为流。这是使用 Set.stream() 完成的。
- 使用定义的谓词条件过滤获得的流
- 已获得所需的 Stream。返回/打印流。
// Java Program to convert // Set to Stream in Java 8 import java.util.*; import java.util.stream.*; import java.util.function.*; class GFG { // Generic function to convert a set to stream private static
Stream convertSetToStream(Set set, Predicate predicate) { return set.stream() .filter(predicate); } // Main method public static void main(String args[]) { // Create a set of String Set setOfString = new HashSet<>( Arrays.asList("GeeksForGeeks", "A computer portal", "for", "Geeks")); // Print the set of String System.out.println("Set of String: " + setOfString); // Create the predicate for item starting with G Predicate predicate = new Predicate () { @Override public boolean test(String s) { // filter items that start with "G" return s.startsWith("G"); } }; // Convert Set of Stream Stream streamOfString = convertSetToStream(setOfString, predicate); // Print the filter Stream of String System.out.println("Stream from List with items" + " starting with G: "); System.out.println(Arrays.toString( streamOfString.toArray())); } } 输出:Set of String: [for, Geeks, GeeksForGeeks, A computer portal] Stream from List with items starting with G: [Geeks, GeeksForGeeks]