arraylist可直接调用stream()获取stream进行流式操作,支持filter、map、distinct等中间操作和collect、count等终止操作,流一次性且不修改原集合,需注意null安全处理。

Java 中 ArrayList 可以直接调用 stream() 方法获取 Stream,之后就能用各种流式操作处理数据,比如过滤、映射、聚合等。
获取 Stream 并做基础转换
ArrayList 实现了 Collection 接口,自带 stream() 方法,无需额外转换。
- 直接调用
list.stream()得到顺序流;需要并行处理时用list.parallelStream() - 流是“一次性”的,用完即失效,重复使用需重新获取
- 原始 ArrayList 不受影响,Stream 操作默认不修改原集合(除非在
forEach里手动改)
常用中间操作示例
这些操作返回新 Stream,支持链式调用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
filter(x -> x > 10):保留大于 10 的元素 -
map(String::toUpperCase):把每个字符串转大写 -
distinct():去重(依赖元素的equals和hashCode) -
sorted()或sorted(Comparator.reverseOrder()):排序
常用终止操作与结果收集
终止操作会触发执行,并返回结果(如值、集合、布尔值等):
-
collect(Collectors.toList()):收集为新 ArrayList(最常用) -
collect(Collectors.toSet()):收集为 Set,自动去重 -
count():返回元素个数(返回long) -
findFirst():返回第一个匹配元素(Optional包装) -
anyMatch(x -> x.startsWith("A")):是否存在满足条件的元素
注意空值和异常处理
Stream 不会自动跳过 null,遇到 null 可能抛 NullPointerException:
- 过滤前加
filter(Objects::nonNull)避免空指针 - 在
map中做判空处理,例如map(x -> x == null ? "" : x.trim()) - 自定义
Comparator时注意 null 安全,可用Comparator.nullsLast(String::compareTo)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










