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

流式编程的中间操作

流式编程的中间操作

Java Stream 的中间操作是流式编程的核心,它们负责对数据流进行处理和转换,并且支持链式调用。下面我会逐个拆解常用的中间操作,包括用法、原理和实战案例,帮你彻底掌握。

一、过滤:filter(Predicate<T>)

作用

保留流中满足条件的元素(Predicate 是函数式接口,返回 boolean)。

示例
List<String> list = Arrays.asList("apple", "banana", "cherry", "date");// 保留长度 > 5 的字符串
Stream<String> filtered = list.stream().filter(s -> s.length() > 5); // 条件:长度大于5// 结果流包含:["banana", "cherry"]
关键细节
  • 过滤是“筛选”而非“修改”,不改变元素本身,只决定是否保留。
  • 适合场景:从集合中筛选符合业务条件的元素(如状态为“启用”的用户)。

二、映射:map(Function<T, R>)flatMap(Function<T, Stream<R>>)

1. map(Function<T, R>)

作用:将流中的每个元素通过 Function 转换为另一种类型(一对一映射)。

示例

List<String> words = Arrays.asList("a", "b", "c");// 将字符串转换为其长度(String -> Integer)
Stream<Integer> lengths = words.stream().map(s -> s.length()); // 或方法引用:String::length// 结果流:[1, 1, 1]

场景:提取对象的某个字段(如 List<User>List<Long> 用户ID)。

2. flatMap(Function<T, Stream<R>>)

作用:将流中的每个元素转换为一个新的流,再将所有新流“扁平化”为一个流(一对多映射+合并)。

示例

List<List<String>> nestedList = Arrays.asList(Arrays.asList("a", "b"),Arrays.asList("c", "d")
);// 扁平化嵌套列表(List<List<String>> -> Stream<String>)
Stream<String> flatStream = nestedList.stream().flatMap(innerList -> innerList.stream()); /
http://www.dtcms.com/a/309580.html

相关文章:

  • 机器学习sklearn:随机森林的决策树
  • 低通滤波器的原理以及作用
  • C# 引用外部项目
  • 切比雪夫不等式
  • 网页从点击到显示:前端开发视角下的旅程
  • 在SQL SERVER 中如何用脚本实现每日自动调用存储过程
  • 大模型开发框架LangChain之构建知识库
  • 高速公路桥梁安全监测系统解决方案
  • 技术栈:基于Java语言的搭子_搭子社交_圈子_圈子社交_搭子小程序_搭子APP平台
  • 安全专家发现利用多层跳转技术窃取Microsoft 365登录凭证的新型钓鱼攻击
  • 【C#学习Day14笔记】泛型、集合(数组列表Arraylist、列表list)与字典
  • Python 中的可迭代、迭代器与生成器——从协议到实现再到最佳实践
  • 最新docker国内镜像源地址大全
  • AttributeError: ChatGLMTokenizer has no attribute vocab_size
  • 强反光干扰下识别率↑89%!陌讯多模态融合算法在烟草SKU识别的实战解析
  • MySQL分析步
  • U-Net vs. 传统CNN:为什么医学图像分割需要跳过连接?
  • C语言的复合类型、内存管理、综合案例
  • 【AI 加持下的 Python 编程实战 2_12】第九章:繁琐任务的自动化(上)——自动清理电子邮件文本
  • PendingIntent相关流程解析
  • MySQL——事务详解
  • React Refs:直接操作DOM的终极指南
  • RAGFlow Agent 知识检索节点源码解析:从粗排到精排的完整流程
  • Java学习第九十六部分——Eureka
  • Elasticsearch IK 中文分词器指南:从安装、配置到自定义词典
  • IPAM如何帮助企业解决IP冲突、识别未经授权设备并管理子网混乱
  • MAC 升级 Ruby 到 3.2.0 或更高版本
  • ARM Cortex-M 处理器的应用
  • Smart Launcher:安卓设备上的智能启动器
  • ElasticSearch Linux 下安装及 Head 插件 | 详情