当前位置: 首页 > 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.cnnetsun.cn/news/4046790.html

相关文章:

  • C++文件操作全解析:从基础读写到性能优化实战
  • AI编程助手Turbo与Turbo+核心区别:从代码补全到任务协作的范式演进
  • 网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序
  • [通信与计算]复变函数:概念及其与通信的联系
  • Go缓存策略实战从本地缓存到Redis多级缓存
  • 00 - AI Agent 开发实战 · 课程大纲
  • PKC 第 126 个开关:隐藏 PKC的位置、验证方法与风险边界
  • 今天的表现,是多个变量共同作用后的结果。
  • 欢迎使用Markdown编辑器
  • 孤能子视角:EIS认识论分册总纲——同一认知呼吸的四次显影
  • HTML语义化标签详解及实战使用场景
  • 深入解析mysql-connector-java:核心机制、性能调优与生产实践
  • System V共享内存与环形队列:构建高性能进程间通信(IPC)方案
  • localStorage与sessionStorage:前端数据存储核心原理与实战指南
  • 模型蒸馏实战:从原理到代码,实现大模型轻量化部署
  • Mac上部署Windows To Go超详细指南:从Intel到Apple Silicon芯片全攻略
  • 企业财务依托 AI 落地资金管控、风险监测与经营分析,云上财务 AI Agent 如何选型?—— 优先考量 Amazon Quick 四链路一体化方案
  • League Akari 免费开源英雄联盟客户端工具箱:一篇看懂它如何替你排队、选人、复盘战绩
  • LiveCaptions-Translator 实时字幕翻译实战指南:10 分钟上手,3 个关键设置让外语视频不再难懂
  • cm3d2 com3d2 自用搜索插件+下载地址
  • 微信逆向入门:解密 ipa 之前,先搞懂这 3 个关键问题
  • 把背单词藏进 Windows 通知栏,ToastFish 帮你每天白赚 10 分钟
  • OneDiffusion多视角生成终极指南:从单张图片到3D场景的神奇转换
  • 深入text-to-motion代码库:核心模块与关键函数详解
  • atc-react未来路线图:即将发布的5大功能预测与使用场景
  • 如何安装与配置Jumpcut?macOS剪贴板增强工具新手入门指南
  • d3-cookbook测试驱动开发:确保数据可视化代码质量的最佳实践
  • 抖音下载工具实战指南:5分钟批量保存高清无水印视频的完整攻略
  • Grok4.2手机/平板/电脑国内直连全攻略:轻松搞定海外电商竞品分析!
  • atc-react社区贡献指南:如何开发自定义Response Actions和Playbooks