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

流式编程终端操作

流式编程终端操作

太棒了!掌握终端操作是流式编程的“最后一公里”,它们是触发流执行的关键,决定了流的最终输出形式。下面我会系统讲解常用终端操作,包括用法、场景和注意事项,帮你彻底吃透!

一、终端操作的核心特点

  • 触发执行:所有中间操作(如filtermap)只有在终端操作被调用时才会真正执行(惰性执行的体现)。
  • 消费流:终端操作执行后,流会被“消费”,无法再次使用(否则会抛IllegalStateException)。
  • 返回具体结果:终端操作返回非Stream类型的结果(如集合、数值、布尔值等)。

二、常用终端操作分类详解

1. 收集结果:collect(Collector<T, A, R>)

最常用的终端操作,将流转换为集合、映射或其他自定义类型,灵活度极高。

(1)转集合(基础用法)
List<String> list = Arrays.asList("apple", "banana");// 转List(默认ArrayList)
List<String> resultList = list.stream().collect(Collectors.toList());// 转Set(去重,默认HashSet)
Set<String> resultSet = list.stream().collect(Collectors.toSet());// 转具体实现类(如LinkedList保持顺序)
List<String> linkedList = list.stream().collect(Collectors.toCollection(LinkedList::new));
(2)分组与分区(进阶用法)
  • 分组(groupingBy:按某个字段将元素分组为Map<分组键, List<元素>>

    List<User> users = Arrays.asList(new User("张三", 20, "男"),new User("李四", 25, "男"),new User("王五", 22, "女")
    );// 按性别分组:Map<String, List<User>>
    Map<String, List<User>> groupByGender = users.stream().collect(Collectors.groupingBy(User::getGender));
    // 结果:{"男": [张三, 李四], "女": [王五]}
    
  • 分区(partitioningBy:按布尔条件分为两组(Map<Boolean, List<元素>>),是分组的特殊情况。

    // 按年龄是否≥22分区
    Map<Boolean, List<User>> partitionByAge = users.stream().collect(Collectors.partitioningBy(u -> u.
http://www.dtcms.com/a/310009.html

相关文章:

  • UnionApplication
  • 【C++/STL】vector基本介绍
  • 关于cherryusb的in/out完成条件
  • WAIC现场速递:AI热浪扑面而来|小奇说
  • QD9361开发板教程:基于zynq的PS端的DDR3测试
  • Vue+Cesium 基础搭建
  • 智能体的未来:AGI路径上的关键技术突破
  • 分类预测 | Matlab实现CPO-PNN冠豪猪算法优化概率神经网络多特征分类预测
  • Win11怎样安装DirectX 9
  • 稳健标准误
  • 【苍穹外卖项目】Day05
  • draw_ctx中clip_area和buf_area的区别,为什么看起来差不多?
  • 第四篇:材质与纹理:让物体“真实“起来
  • Linux选择
  • evo_traj的参数设置及保存图片
  • van list 重复进入onload
  • c++和python联合编程示例
  • Conda install安装了一些库,如何撤销操作
  • 《n8n基础教学》第一节:如何使用编辑器UI界面
  • Day17--二叉树--654. 最大二叉树,617. 合并二叉树,700. 二叉搜索树中的搜索,98. 验证二叉搜索树
  • chroma、faiss和milvus三者之间的区别和联系
  • 数据结构——查找(一、什么是查找?)
  • 通过观看数百个外科手术视频课程来学习多模态表征|文献速递-医学影像算法文献分享
  • OpenVLA: 论文阅读 -- 开源视觉-语言-行动模型
  • 我用提示词A 对qwen3-4b大模型进行 nl2sql 任务 grpo 强化学习,评估的时候换新提示词,会影响nl2sql测评准确率吗?
  • IOMMU Client设备DMA配置过程分析(九)
  • “物联网+技校”:VR虚拟仿真实训室的发展前景
  • ALOcc: Adaptive Lifting-based 3D Semantic Occupancy and
  • Python爬虫实战:研究pycares技术构建DNS解析系统
  • Web开发-PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计