当前位置: 首页 > news >正文

Java Stream核心操作精讲

以下是您提供的 10 个 Java Stream API 程序示例的执行说明和核心要点。

1. 基础 Stream 操作示例 (Listing 1)

  • 功能:演示Stream的基础操作,包括获取流、使用min()/max()查找极值、sorted()排序、filter()过滤以及forEach()终端操作 。
  • 执行:运行StreamDemo类的main方法。输出将依次显示:
    • Original list: [7, 18, 10, 24, 17, 5]
    • Minimum value: 5
    • Maximum value: 24
    • Sorted stream: 5 7 10 17 18 24
    • Odd values: 5 7 17
    • Odd values greater than 5: 7 17

2. reduce() 归约操作示例 (Listing 2)

  • 功能:演示reduce()方法的两种用法:一种返回Optional<T>(用于可能为空的结果),另一种提供初始值(identity)并返回确定类型的结果 。
  • 执行:运行StreamDemo2类的main方法。输出将显示:
    • Product as Optional: 2570400
    • Product as int: 2570400

3. 并行流与组合器 reduce() 示例 (Listing 3)

  • 功能:演示在并行流 (parallelStream()) 中使用三参数reduce()方法,其中第三个参数combiner用于合并并行计算的部分结果 。
  • 执行:运行StreamDemo3类的main方法。输出将显示:
    • Product of square roots: 153.246...(具体数值取决于计算精度)

4. map() 映射操作示例 (Listing 4)

  • 功能:演示map()中间操作,将流中的每个元素(Double)通过函数(计算平方根)转换为新元素,生成一个新的流 。
  • 执行:运行StreamDemo4类的main方法。输出将显示:
    • Product of square roots is 153.246...(与 Listing 3 结果一致,但使用顺序流和map实现)

5. map() 提取对象属性示例 (Listing 5)

  • 功能:演示使用map()将一种对象流 (NamePhoneEmail) 映射为另一种对象流 (NamePhone),实现数据投影或转换 。
  • 执行:运行StreamDemo5类的main方法。输出将显示原始列表和仅包含姓名与电话的新列表。

6. 映射到特定类型流示例 (Listing 6)

  • 功能:演示mapToInt()等特化映射操作,将Stream<Double>转换为IntStream,常用于提高数值计算的性能 。
  • 执行:运行StreamDemo6类的main方法。输出将显示原始列表和每个元素向上取整 (Math.ceil) 后的整数值。

7. collect() 收集操作示例 (Listing 7)

  • 功能:演示使用collect()终端操作配合Collectors.toList()Collectors.toSet(),将流中的元素收集到ListSet集合中 。
  • 执行:运行StreamDemo7类的main方法。输出将显示收集到ListSet中的姓名与电话信息。

8. 使用迭代器遍历流示例 (Listing 8)

  • 功能:演示如何通过iterator()方法获取流的迭代器 (Iterator),以传统方式遍历流中的元素 。
  • 执行:运行StreamDemo8类的main方法。输出将按顺序打印列表中的所有字符串。

9. 使用 Spliterator 遍历流示例 (Listing 9)

  • 功能:演示使用spliterator()方法获取流的可拆分迭代器 (Spliterator),并使用tryAdvance()方法遍历元素 。
  • 执行:运行StreamDemo9类的main方法。输出将按顺序打印列表中的所有字符串,功能与Iterator类似。

10. Spliterator分割示例 (Listing 10)

  • 功能:演示SpliteratortrySplit()方法,该方法尝试将迭代器分割成两部分,以支持并行处理 。
  • 执行:运行StreamDemo10类的main方法。输出将分为两部分,分别来自原Spliterator分割后产生的两个部分。

参考来源

  • Java 8 Stream 终端操作大揭秘:代码示例带你轻松掌握
  • java8 stream流操作
  • Java 8 Stream Api 中的 map和 flatMap 操作
  • java 8 Stream中操作类型和peek的使用
  • 怎么break java8 stream的foreach
http://www.jsqmd.com/news/1400845/

相关文章:

  • 2026年上海GEO代运营选型对比及中小微企业选购指南 - 筑云鲸
  • 传播易凭什么成为企业全媒体智能发稿的优选平台?
  • Dify 中级实验(13):多 Agent 协作——如何编排多个智能体分工干活?
  • 软件开发中的上下文湮灭:从代码考古到主动防腐的工程实践
  • 2.8万亿参数本地跑起来是什么体验?Kimi K3开源权重部署与性能调优实录
  • 技术人如何用工程思维管理社交媒体算法依赖,夺回注意力主权
  • NC|婴儿肠道病毒组全球荟萃分析揭示生命早期三年噬菌体群落构建与功能演进规律
  • 天道13~14集
  • 湖南人力资源服务业破577亿,湘楚人力以23亿营收与国家级调解资质领跑全省出海用工赛道
  • Clawdbot本地化AI助手部署与配置指南
  • AI异步任务架构设计:SSE、检查点与幂等性实现断点续传
  • 家庭教育指导师培训机构怎么选?全国考生合规报考筛选指南 - 教育行业深析
  • JavaSE 基础语法 - 继承 - ②
  • 手术室液体加温箱:原理、应用与选购指南
  • AI应用成本优化实战:从60亿消耗零收入案例看LLM经济学
  • 2026年上海GEO代运营服务选购全指南 - 筑云鲸
  • 哲学与编程的认知革命:从维特根斯坦到Python实践
  • Swagger Codegen 实战指南:从 OpenAPI 规范到多语言代码生成
  • 微信小程序订阅消息开发全解析:从用户手势调用到后端发送实践
  • 你的 sys.argv 为何总“认错”参数?——命令行解析中引号与转义的致命陷阱与避坑指南
  • 2026年上海GEO代运营公司选型对比指南 - 筑云鲸
  • STM32 Boot模式详解:从启动原理到IAP应用实战
  • Python爬虫入门:BeautifulSoup解析HTML与数据提取实战
  • 解决Python SSL模块不可用错误:从原理到实战修复指南
  • Dify 中级实验(08):代码节点进阶——如何用标准库处理文件与数据?
  • 数值转换:从底层原理到实战应用,解决数据处理的精度与格式难题
  • 硬件与软件的协调,参考b站黑马程序员
  • 2026年8月市场上技术好的采暖炉实力厂家选哪家,空气能锅炉/燃油锅炉/蒸发器/采暖炉/蒸汽锅炉/锅炉,采暖炉厂家找哪家 - 企业权威推荐大使
  • SAM胡诌
  • 第 7 篇:「Fluss 状态外部化」—— Delta Join 与 Aggregation Merge Engine