Stream流

Stream流

函数式编程:https://github.com/RonnieLee24/Java_new_feature/blob/master/函数式编程.md
Stream本身并不是数据结构,不会存储数据或改变数据源,它仅定义处理方式,可以视为一种高级迭代器

  • 不仅能够支持顺序处理
  • 还能进行并行处理
  • 为集合的过滤映射,聚合等操作提供了一种高效的实现方式
    要掌握和有效使用stream API,关键在于理解其三个核心步骤:
  1. 第一步创建流
  2. 第二步中间操作
  3. 第三步终端操作

创建流

流的拼接

public class test {
    public static void main(String[] args) {
        Stream<String> stream1 = Stream.of("a", "b", "c");
        Stream<String> stream2 = Stream.of("d", "e", "f");
        Stream<String> stream = Stream.concat(stream1, stream2);  //  流的拼接
        stream.forEach(s -> System.out.print(s));
    }
}

动态地构建一个流(根据特定条件:动态决定是否将元素加入流中)StreamBuilder 流构建器

public class test {
    public static void main(String[] args) {
        Stream.Builder<String> streamBuilder = Stream.builder();
        streamBuilder.add("a");
        streamBuilder.add("b");
        if (Math.random() > 0.5){   //  50% 可能添加 C
            streamBuilder.add("c");
        }
        //  注意:一旦调用了 build 方法,就不能再向 streamBuilder 里面添加更多元素
        //  否则会抛出 illegalStateException 异常 
        Stream<String> stream = streamBuilder.build();
        stream.forEach(s -> System.out.print(s));
    }
}

从文件创建流,适合文本分析,日志文件处理等场景,通过 Java的 Files类的 lines 方法来实现

public class test {
    public static void main(String[] args) {
        Path path = Paths.get("F:\\Test\\src\\test5\\file.txt");
        try {
            Stream<String> lines = Files.lines(path);
            lines.forEach(s -> System.out.println(s));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
posted @ 2024-08-18 01:00  爱新觉罗LQ  阅读(3)  评论(0编辑  收藏  举报