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

Java Stream API:现代化集合处理的艺术

Java Stream API:现代化集合处理的艺术

引言

在Java 8中引入的Stream API彻底改变了我们处理集合数据的方式。它不仅仅是一个新的工具集,更代表了一种声明式、函数式的编程范式。本文将深入探讨Java Stream的核心概念、使用场景和最佳实践。

一、什么是Stream?

Stream(流)不是数据结构,而是对数据源(集合、数组、I/O资源等)的元素序列进行函数式操作的一种抽象。与传统的集合操作不同,Stream具有以下特点:

  • 惰性执行:中间操作不会立即执行,只有遇到终端操作时才会触发计算
  • 不可复用:一个Stream只能被消费一次
  • 无存储:Stream本身不存储数据,数据存储在底层集合或由生成器生成

二、Stream操作类型

Stream操作分为两类:

1. 中间操作(Intermediate Operations)

返回新Stream的操作,可以链式调用:

List<String> filtered = list.stream()
    .filter(s -> s.length() > 3)  // 过滤
    .map(String::toUpperCase)     // 映射
    .sorted()                    // 排序
    .collect(Collectors.toList()); // 终端操作

常用中间操作:

  • filter(Predicate<T>):过滤元素
  • map(Function<T,R>):元素转换
  • flatMap(Function<T,Stream<R>>):扁平化转换
  • distinct():去重
  • sorted() / sorted(Comparator):排序
  • peek(Consumer<T>):查看元素但不修改

2. 终端操作(Terminal Operations)

触发实际计算并返回非Stream结果:

long count = list.stream().count();  // 计数
list.stream().forEach(System.out::println);  // 遍历
Optional<String> max = list.stream().max(Comparator.naturalOrder());

常用终端操作:

  • collect(Collector):转换为集合或其他形式
  • forEach(Consumer<T>):遍历
  • reduce(BinaryOperator<T>):归约
  • min()/max():极值
  • count():计数
  • anyMatch()/allMatch()/noneMatch():匹配检查
  • findFirst()/findAny():查找元素

三、Stream创建方式

1. 从集合创建

相关文章:

  • AI比人脑更强,因为被植入思维模型【49】冰山理论思维模型
  • 鱼骨图分析法实战:5步定位系统故障
  • Linux系统学习Day2——在Linux系统中开发OpenCV
  • 【微机及接口技术】- 第九章 串行通信与串行接口(上)
  • 路由表的最终地址 root 路由跟踪,最终到哪里去
  • RK-realtime Linux
  • python(49)-串口接收与发送
  • Android audio(6)-audiopolicyservice介绍
  • C++Cherno 学习笔记day17 [66]-[70] 类型双关、联合体、虚析构函数、类型转换、条件与操作断点
  • 华为OD全流程解析+备考攻略+经验分享
  • VS Code连接服务器编写Python文件
  • 【Docker】Dockerfile 编写实践
  • MYSQL数据库语法补充
  • 区间 DP 详解
  • XMLHttpRequest vs Fetch API:一场跨越时代的“浏览器宫斗剧“
  • 什么是软件测试(目的、意义、流程)
  • STM32在裸机(无RTOS)环境下,需要手动实现队列机制来替代FreeRTOS的CAN发送接收函数
  • 第四篇:系统分析师——12-16章
  • 《线性表、顺序表与链表》教案(C语言版本)
  • JavaScript性能优化(上)
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • 商务部就开展加强战略矿产出口全链条管控工作应询答记者问
  • 以军向也门3个港口的居民发布撤离令
  • 人民日报任平:从汽车产销、外贸大盘看中国经济前景
  • 北京今日白天超30℃晚间下冰雹,市民称“没见过这么大颗的”
  • 成都警方通报:8岁男孩落水父母下水施救,父亲遇难