📌  相关文章
📜  Java中将列表转换为流的程序

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

Java中将列表转换为流的程序

List 是 Collection 的子接口。它是可以存储重复值的对象的有序集合。由于 List 保留了插入顺序,它允许元素的位置访问和插入。 List 接口由 ArrayList、LinkedList、Vector 和 Stack 类实现。

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

以下是在Java中将 List 转换为 Stream 的各种方法:

  1. 使用 List.stream() 方法: Java List 接口提供了 stream() 方法,该方法返回一个以此集合为源的顺序流。

    句法:

    List.stream()

    算法

    1. 获取流
    2. 使用 List.stream() 方法将 Stream 转换为 List。
    3. 返回列表

    程序:

    // Java Program to convert
    // List to Stream in Java 8
      
    import java.util.*;
    import java.util.stream.*;
    import java.util.function.Function;
      
    class GFG {
      
        // Generic function to convert a list to stream
        private static  Stream convertListToStream(List list)
        {
            return list.stream();
        }
      
        public static void main(String args[])
        {
      
            // Create a stream of integers
            List list = Arrays.asList("GeeksForGeeks",
                                              "A computer portal", 
                                              "for Geeks");
      
            // Print the List
            System.out.println("List: " + list);
      
            // Convert List to stream
            Stream stream = convertListToStream(list);
      
            // Print the Stream
            System.out.println("Stream from List: "
                        + Arrays.toString(stream.toArray()));
        }
    }
    
    输出:
    List: [GeeksForGeeks, A computer portal, for Geeks]
    Stream from List: [GeeksForGeeks, A computer portal, for Geeks]
    
  2. 使用 Predicate 过滤流Functional Interface Predicate在Java.util 中定义。函数包,因此可以用作 lambda 表达式或方法引用的赋值目标。它提高了代码的可管理性,有助于分别对它们进行单元测试

    算法

    1. 获取流
    2. 通过使用预定义的静态方法或通过覆盖 Predicate 接口创建新方法来定义 Predicate 条件。在这个程序中,接口被覆盖以匹配以“G”开头的字符串。
    3. 使用 List.stream() 方法将 Stream 转换为 List。
    4. 使用定义的谓词条件过滤获得的流
    5. 已获得所需的 Stream。
      因此使用 forEach() 方法打印流的过滤元素。
      也可以根据需要退回。

    程序:

    // Java Program to convert
    // List to Stream in Java 8
      
    import java.util.*;
    import java.util.stream.*;
    import java.util.function.*;
      
    class GFG {
      
        public static void main(String args[])
        {
      
            // Create a stream of integers
            List list = Arrays.asList("GeeksForGeeks",
                                              "A computer portal", 
                                              "for", 
                                              "Geeks");
      
            // Print the List
            System.out.println("List: " + list);
      
            // 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");
                }
            };
      
            System.out.println("Stream from List with items"+
                                          " starting with G: ");
      
            // Convert List to stream
            list.stream()
                .filter(predicate)
                .forEach(System.out::println);
        }
    }
    
    输出:
    List: [GeeksForGeeks, A computer portal, for, Geeks]
    Stream from List with items starting with G: 
    GeeksForGeeks
    Geeks