Java 流 API
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2800+ 小伙伴加入学习 ,欢迎点击围观
这些天我一直在大量使用Java Stream API。所以我想,为什么不写一个简短的教程呢。
那么什么是蒸汽呢?
不要与 Java IO 的 InputStream 或 OutputStream 混淆。 Stream 在 Java 8 中是完全不同的东西。
流基本上表示一系列元素,并提供一组丰富的操作来计算这些元素。
在我们的日常业务应用程序中进行批量操作很常见。所以通常我们确实使用 for 循环和集合来做到这一点,我们遍历集合然后编写 if then else 代码和各种变量发挥作用,我们得到一大块丑陋的顺序代码。
我们使用流 API 做同样的事情,但可以使用 lambda 和函数方法将事物抽象到一个非常高的层次,并编写更优雅、更易理解和更干净的代码。有了一定的抽象之后,我们可以做一定的优化,比如我们可能想要并行,这在以前是不容易的。
好吧,让我们做一些代码示例 -
1. 首先,让我们使用 IntStream 删除常规的 for 循环。我想要做的是,打印 1 到 10-
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
或者只是使用方法参考-
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
2.我想计算列表中元素的数量——
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
3. 我想找到列表中所有元素的平均值 -
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
4.我想得到完整的清单摘要
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
5.从列表中创建地图
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
6.我想获取列表的最大数量
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
7. 假设我有一个名字数组,我想计算所有以“C”开头的名字
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
8.假设我想把所有的名字都变成大写和排序然后打印
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
一个提前的例子
假设我有一个名为 Person 的类 ->
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
9.我想按年龄分组
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
10 我想得到所有人的平均年龄
IntStream.range(0, 10)
.forEach(value -> System.out.println(value));
待续...