Java 流 API

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

这些天我一直在大量使用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));


待续...

相关文章