📌  相关文章
📜  使用泛型在Java中将 Set 转换为 Stream 的程序

📅  最后修改于: 2022-05-13 01:54:56.696000             🧑  作者: Mango

使用泛型在Java中将 Set 转换为 Stream 的程序

Java Set 是Java.util 包的一部分,扩展了Java.util.Collection 接口。它不允许使用重复元素,并且最多只能容纳一个空元素。

Stream 是一系列支持各种方法的对象,这些方法可以流水线化以产生所需的结果。

以下是将Set 转换为 Stream的各种方法。

  1. 使用 Collection.stream() :此方法涉及使用 Collection.stream() 方法直接将 Set 转换为 Stream。

    算法

    1. 获取要转换的集合。
    2. 将集转换为流。这是使用 Set.stream() 完成的。
    3. 返回/打印流。
    // 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]
    
  2. 使用 Predicate 过滤 Stream :在此方法中,使用 filter(Predicate) 方法返回由与给定谓词条件匹配的元素组成的流。功能接口谓词在Java.util 中定义。函数包,因此可以用作 lambda 表达式或方法引用的赋值目标。它提高了代码的可管理性,有助于分别对它们进行单元测试

    算法

    1. 获取要转换的集合。
    2. 通过使用预定义的静态方法或通过覆盖 Predicate 接口创建新方法来定义 Predicate 条件。在这个程序中,接口被覆盖以匹配以“G”开头的字符串。
    3. 将集转换为流。这是使用 Set.stream() 完成的。
    4. 使用定义的谓词条件过滤获得的流
    5. 已获得所需的 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]