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

相关文章:

  • 【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?
  • 32. flex 的子元素可以浮动吗
  • 三星固态硬盘PM1643A停产后,PM1653能代替PM1643A吗?有兼容性问题吗?
  • 【PHP】接入百度AI开放平台人脸识别API,实现人脸对比
  • TCP RTO 与丢包检测
  • VS Code 插件开发教程
  • 【高等数学】第七章 微分方程——第六节 高阶线性微分方程
  • 1 前言:什么是 CICD 为什么要学 CICD
  • Fabarta个人专属智能体限时体验中:高效、安全的长文写作新搭档
  • 机器学习——逻辑回归(LogisticRegression)的核心参数:以约会数据集为例
  • 自动化框架pytest
  • linux编译基础知识-编译时路径和运行时路径
  • ModeSeq论文阅读
  • Redis 数据结构全景解析
  • 如何管理数据足迹,实现SAP S/4HANA的无缝迁移
  • 记一次Windwos非常离谱的系统错误,IPF错误,程序构建卡顿,程序启动卡顿。。。
  • 从“多、老、旧”到“4i焕新”:品牌官方商城(小程序/官网/APP···)的范式跃迁与增长再想象
  • 振动波形转音频播放并做声纹聚类
  • Eigent:革新复杂任务处理的多智能体协作平台技术解析
  • MybatisPlus如何用wrapper语句灵活连接多查询条件
  • [位运算]2411. 按位或最大的最小子数组长度
  • 安卓开发--RelativeLayout(相对布局)
  • AI在安全方面的十个应用场景
  • 技术栈:基于Java语言的搭子_搭子社交_圈子_圈子社交_搭子小程序_搭子APP平台
  • 电子合同管理台账功能详解
  • 移除 Excel 文件(.xlsx)的工作表保护
  • EasyExcel 公式计算大全
  • python进程、线程、协程
  • 【LeetCode 热题 100】155. 最小栈
  • 【东枫科技】DreamHAT+