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

流式编程的中间操作

流式编程的中间操作

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.xdnf.cn/news/16769.html

相关文章:

  • linux编译基础知识-编译时路径和运行时路径
  • 在Idea中,配置maven
  • Galaxea机器人由星海图人工智能科技有限公司研发的高性能仿人形机器人
  • 【C语言】预处理详解
  • 高防服务器租用:保障数据安全
  • Nginx跨域问题与 MIME 类型错误深度排错指南:解决 MIME type of “application/octet-stream“ 报错
  • PyTorch分布式训练深度指南
  • 26数据结构-顺序表
  • 【数据结构与算法】21.合并两个有序链表(LeetCode)
  • 如何将消息转移到新 iPhone
  • 深入剖析Spring IOC容器——原理、源码与实践全解析
  • Linux---编辑器vim
  • 嵌入式学习笔记-MCU阶段-DAY10ESP8266模块
  • 初识微服务
  • 飞算 JavaAI 中 SQL 另存为脚本功能详解
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • 充电桩与照明“联动”创新:智慧灯杆破解新能源基建难题
  • 微服务消息队列之RabbitMQ,深入了解
  • 【unity小技巧】封装unity适合2D3D进行鼠标射线检测,获取鼠标位置信息检测工具类
  • Java设计模式之行为型模式(解释器模式)实现方式详解
  • Elasticsearch 集群管理核心 API 指南:健康、状态、分片诊断与运维实战
  • 调试 Rust 生成的 WebAssembly
  • 工业级蓝光三维扫描仪:汽车零部件高精度检测的利器
  • Python LRU缓存应用与示例
  • 守护数字核心:主机安全的重要性与全方位防护指南
  • zabbix的PostgreSQL监控模板中文环境采集问题处理
  • JsHook入门
  • Nginx 来正确地托管网站服务
  • 汇川ITS7100E触摸屏交互界面开发(二)界面开发软件使用记录
  • 使用python连接MongoDB