探索Java 8 Stream API:现代数据处理的新纪元

Stream流

Stream初探:何方神圣?

Stream流是一种处理集合数据的高效工具,它可以让你以声明性的方式处理数据集合。Stream不是存储数据的数据结构,而是对数据源(如集合、数组)的运算操作概念,支持函数式编程风格

特性

  • 可以配合lambda写出简洁代码。
  • 链式操作:支持一系列中间操作(如filter, map)和最终操作(如forEach, collect),这些操作可以链接起来,形成一个管道来处理数据。
  • 延迟执行:中间操作不会立即执行,而是构建一个执行计划,直到遇到最终操作时才一次性完成所有操作,这种方式可以提高效率。
  • 并行处理:支持并行处理,通过调用parallelStream()方法,可以轻松地利用多核处理器的优势,无需手动编写多线程代码。
  • 类型安全:利用泛型,Stream操作可以在编译期检查类型错误,提高代码的安全性和可读性。

如何获得Stream流

Java提供了几种方式,可以让我们获得Stream流

  1. [集合创建流]Collection 接口的 stream()或 parallelStream()方法
  2. [自由值创建]静态的 Stream.of(…)、Stream.empty()方法
  3. [数组创建流]Arrays.stream(array)
  4. 静态的 Stream.generate()方法生成无限流,接受一个不包含引元的函数
  5. 静态的 Stream.iterate()方法生成无限流,接受一个种子值以及一个迭代函数
  6. Pattern 接口的 splitAsStream(input)方法
  7. 静态的 Files.lines(path)、Files.lines(path, charSet)方法
  8. 静态的 Stream.concat()方法将两个流连接起来
代码演示
          /*
         * 三种常用获得流的方法
         * 1.Collection接口中的stream()方法
         * 2.Stream类的静态方法 of()
         * 3.Arrays工具类的stream(T[] array)方法
         *
         */
        // 用Collection接口中的stream()方法,获得流
        ArrayList<Integer> list = new ArrayList<>();// 创建集合
        list.add(1);
        list.add(2);
        list.add(3);
        Stream<Integer> stream1 = list.stream();// 获得流

        // 2.Stream类的静态方法 of()
        Stream<Integer> stream2 = Stream.of(1, 2, 3, 4);// 获得流

        //3.Arrays工具类的stream(T[] array)方法
        int[] arr = {
   
   1,2,3,4};
        IntStream stream3 = Arrays.stream(arr);// 获得流

Stream方法操作

Stream流就是流式处理数据,流的操作有很多种

  • 中间操作(真正处理数据的操作)
    • 中间操作就是执行完返回的是一个流,即可以**继续执行**流操作
    • 敲代码来说,就是使用中间操作的方法,写完继续再.调用其他方法
  • 终止操作(将操作完的结果返回)
    • 敲代码来说,调用终止方法,代码就结束;
操作 函数 说明
中间操作 filter(Predicate) 将结果为false的元素过滤掉
中间操作 map(Function) 转换元素的值,可以用方法引元或者lambda表达式
中间操作 flatMap(Function)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值