news 2026/6/9 23:34:41

286. Java Stream API - 使用Stream.iterate(...)创建流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
286. Java Stream API - 使用Stream.iterate(...)创建流

文章目录

  • 286. Java Stream API - 使用Stream.iterate(...)创建流
      • ✅ 核心概念
      • 🔨 基本用法:经典 iterate 模式
        • 📦 输出结果:
      • ⚠️ 依然是“无限流”,记得加上 `.limit()`!
      • 🆕 Java 9 起:带有 **终止条件的 iterate**
      • 🧪 再来一个数字序列的例子
      • 📚 小结
      • 💡 何时用 iterate vs generate?
      • 🧠 小练习(培训互动)

286. Java Stream API - 使用Stream.iterate(…)创建流


✅ 核心概念

Stream.iterate(...)是另一种创建无限流的方式。

generate()不同的是,它不是每次都从零开始生成一个独立的值,而是从一个初始值(seed)开始,通过一个一元操作符(UnaryOperator)不断“推演”出下一个值。


🔨 基本用法:经典 iterate 模式

Stream<String>iterated=Stream.iterate("+",s->s+"+");iterated.limit(5L).forEach(System.out::println);
📦 输出结果:
+++++++++++++++

🧠 解读:

  • 起始值为"+"
  • 每个元素等于上一个字符串后再拼接一个+
  • 使用.limit(5)截断无限流,只取前 5 个。

✅ 适合用于序列递增值字符串生成指数增长等场景。


⚠️ 依然是“无限流”,记得加上.limit()

如果不加.limit(),程序会无限运行,不断生成更长的字符串(最终可能崩溃 ⛔)。


🆕 Java 9 起:带有终止条件的 iterate

Java 9 引入了Stream.iterate(seed, predicate, operator),你可以像写循环一样设置“何时停止”。

Stream<String>iterated=Stream.iterate("+",s->s.length()<=5,s->s+"+");iterated.forEach(System.out::println);

输出结果:

+++++++++++++++

🧠 解读:

  • 只有当s.length() <= 5时才继续;
  • 超过这个条件,流自动终止,无需.limit()

就像一个带判断的while循环!


🧪 再来一个数字序列的例子

Stream<Integer>evens=Stream.iterate(0,n->n+2);evens.limit(5).forEach(System.out::println);

输出:

02468

🎯 每个数字是前一个的 +2,非常适合用于递增逻辑。


📚 小结

方法签名用途
Stream.iterate(seed, UnaryOperator)无限推演序列,需要配合.limit()
Stream.iterate(seed, predicate, UnaryOperator)带终止条件的有限流,无需.limit()

💡 何时用 iterate vs generate?

特点Stream.generate(...)Stream.iterate(...)
是否依赖前一个元素❌ 否✅ 是
是否等价于循环❌ 不像循环✅ 类似循环
是否适合递增/变形❌ 不适合✅ 适合
是否生成重复值✅ 常用于生成常量❌ 每次不同

🧠 小练习(培训互动)

填空题:

Stream<Integer>squares=Stream.iterate(1,___,n->n*n).limit(3);squares.forEach(System.out::println);

❓该写什么逻辑才能输出:

111

🤔 答案:

Stream<Integer>squares=Stream.iterate(1,n->true,n->1)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:18:17

如何快速掌握c001apk纯净版酷安客户端:完整使用指南

如何快速掌握c001apk纯净版酷安客户端&#xff1a;完整使用指南 【免费下载链接】c001apk fake coolapk 项目地址: https://gitcode.com/gh_mirrors/c0/c001apk c001apk是一款基于酷安官方客户端的第三方纯净版应用&#xff0c;专为追求清爽体验的用户设计。这个开源项目…

作者头像 李华
网站建设 2026/6/10 10:17:15

基于springboot + vue医学电子技术课堂管理系统(源码+数据库+文档)

医学电子技术课堂 目录 基于springboot vue医学电子技术课堂系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue医学电子技术课堂系统 一、前言 博…

作者头像 李华
网站建设 2026/6/10 10:11:52

成本控制:MGeo地址服务自动伸缩方案设计

成本控制&#xff1a;MGeo地址服务自动伸缩方案设计 为什么需要地址服务的弹性方案 在电商平台的日常运营中&#xff0c;地址查询服务是一个看似简单但至关重要的基础功能。无论是用户下单时的地址匹配&#xff0c;还是物流配送时的路线规划&#xff0c;都依赖于精准的地址服务…

作者头像 李华
网站建设 2026/6/10 10:16:16

成本优化秘籍:用按需GPU云服务运行MGeo地址匹配模型

成本优化秘籍&#xff1a;用按需GPU云服务运行MGeo地址匹配模型 地址数据清洗和标准化是许多企业业务中不可或缺的环节&#xff0c;尤其是对于物流、电商、金融等行业。传统的人工处理方式效率低下且容易出错&#xff0c;而MGeo地址匹配模型能够智能识别地址相似度&#xff0c;…

作者头像 李华
网站建设 2026/6/10 10:09:54

明日方舟游戏资源完全解析:从入门到精通的使用手册

明日方舟游戏资源完全解析&#xff1a;从入门到精通的使用手册 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 还在为找不到明日方舟的高质量游戏素材而苦恼&#xff1f;是否曾经为了一…

作者头像 李华
网站建设 2026/6/10 1:12:21

AI小白也能懂:无需编程的MGeo地址相似度可视化工具

AI小白也能懂&#xff1a;无需编程的MGeo地址相似度可视化工具 社区工作人员经常需要处理居民登记地址的比对工作&#xff0c;但传统方法难以应对"社保局"和"人力社保局"这类语义相同但表述不同的地址。MGeo地址相似度工具正是为解决这一问题而生&#xf…

作者头像 李华