Java8新特性之Stream API

本文深入探讨了Java8中的Stream API,它提供了处理集合的新方式,支持串行和并行操作,利用ForkJoin框架加速处理。Stream API强调数据计算而非存储,特点是惰性执行和不改变源对象。文章通过实例展示了如何从数据源创建Stream,执行中间操作(如filter、map)和终止操作(如forEach、reduce),并介绍了Collector和Collectors工具类在收集数据时的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

Stream API 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。总得来说,Stream API 就是提供了一种高效且易于使用的处理数据的方式。

注:需要会使用 Lambda 表达式 地址


Stream 的流

Stream 不是集合元素,它不是数据结构并不保存数据,而属于流。
流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
区别:集合注重的是数据的保存,而流注重的是数据的计算

Stream 流的特点:

  • 不会存储元素
  • 不会改变源对象
  • 操作是延迟执行的

流的使用步骤:

  • 获取一个数据源
  • 数据转换,即中间操作
  • 执行操作获取想要的结果并终止操作

通过数据源创建 Stream 流
1.Collection

		List<String> list = new ArrayList<>();
		Stream<String> stream1 = list.stream();
		Stream<String> stream2 = list.parallelStream();

注:parallelStream获取的是并行执行的流,底层使用的是 ForkJoin框架
2.数组

		Stream<T> stream3 = Arrays.stream(T array);//int,long,double

3.值

		Stream<String> stream4 = Stream.of("a","b","c");

4.函数(无限流)

		Stream<Integer> stream5 = Stream.iterate(0, (x) -> x + 2);
		Stream<String> stream6 = Stream.generate(() -> Math.random())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值