Java Stream通过中间操作(如filter、map、sorted、distinct)和终端操作(如collect、forEach、count)实现集合元素的函数式处理,不修改原数据源,每次调用需重新执行。
Java Stream 操作元素主要通过一系列中间操作和终端操作来实现。你可以把 Stream 看作是对集合元素的流水线处理工具,它不会修改原始数据源,而是生成新的结果。
筛选与过滤元素
使用 filter() 方法可以根据条件保留符合条件的元素。
例如,从整数列表中筛选出偶数:
ListList
.filte
.collect(Collectors.toList());
转换元素(映射)
使用 map() 可以将每个元素转换成另一种形式或提取某个属性。
比如,将字符串列表转为大写:
ListList
.map(String::toUpperCase)
.collect(Collectors.toList());
排序与去重
用 sorted() 对元素进行排序,支持自然排序或自定义比较器。
List
.sorted()
.collect(Collectors.toList());
使用 distinct() 去除重复元素,依赖元素的 equals 方法判断唯一性。
终端操作获取结果
Stream 链式操作最后需要一个终端操作才能触发执行。常见的有:
- collect():收集结果到集合
- forEach():遍历每个元素并执行操作
- count():统计元素数量
- findFirst() 或 anyMatch():查找或匹配元素
boolean hasLarge = numbers.stream().anyMatch(n -> n > 10);
基本上就这些。Stream 让集合操作更简洁、函数式,掌握 filter、map、sorted 和 collect 就能解决大多数场景。不复杂但容易忽略的是:Stream 不会自动缓存结果,每次调用都要重新流式处理。








