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

相关文章:

  • 带root权限_中国移动创维DT541_S905L3融合机器改机顶盒刷机教程 当贝纯净版安卓9.0系统线刷包 刷机包
  • Rockchip RK3568J +FPGA边缘智能系统及储能网关
  • 【数据结构入门】顺序表
  • 了解Reddit自动化 社区营销更精准
  • 使用mybatis生成器生成实体类mapper和查询参数文件,简单spring mvc 项目。使用log4j输出日志到控制台和文件中。使用配置文件注册Bean
  • 【读文献】Capacitor-drop AC-DC
  • C#线程同步(三)线程安全
  • 【数据分享】各省文旅融合耦合协调度及原始数据(2012-2022)
  • 基于react的YAPI实战指南
  • 算法篇----位运算
  • 1164. 指定日期的产品价格
  • 进阶08:C#与SQL Server通信
  • uniapp基础 (二)
  • Design Compiler:物理约束
  • 【Linux】Linux下基本指令
  • 校园土壤墒情自动监测站:土壤小卫士
  • shell脚本的语法使用及例题
  • 10.Linux 用户和组的管理
  • 数据结构——查找(一、什么是查找?)
  • 嵌入式 C 语言入门:函数封装与参数传递学习笔记 —— 从定义到内存机制
  • Vue+Cesium 基础搭建
  • LT3045EDD#TRPBF ADI亚德诺半导体 线性稳压器 电源管理应用设计
  • 优化算法专栏——阅读导引
  • 【OneAPI】网页搜索API和网页正文提取API
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • linux下非Docker模式部署Xinference并部署Rerank模型
  • 最新docker国内镜像源地址大全
  • DreamBoards 借助 DreamHAT+ 雷达插件为 Raspberry Pi 提供 60GHz 毫米波雷达
  • 基于STM32+FPGA工业打印机运动控制卡的核心解决方案
  • Spring Boot微服务性能优化实践指南:从配置到监控