Java 8的Stream API提供声明式数据处理,支持过滤、映射、排序、归约等操作,代码更简洁高效。

Java 8引入的Stream API为集合数据的处理带来了函数式编程的便利。它让开发者能以声明式方式操作数据,代码更简洁、可读性更强。使用Stream API,你可以对集合进行过滤、映射、排序、归约等操作,而无需编写繁琐的循环和临时变量。
创建Stream并执行基本操作
Stream可以从集合、数组或静态方法创建。一旦获得Stream,就可以链式调用中间操作和终止操作。
- 通过集合的stream()方法获取流,例如:
Listlist = Arrays.asList("a", "b"); Stream stream = list.stream(); - 使用Stream.of()从指定元素创建流:
Streamstream = Stream.of(1, 2, 3); - 常见中间操作包括:filter()(按条件筛选)、map()(转换元素)、sorted()(排序)
- 终止操作如:forEach()(遍历)、collect()(收集结果)、count()(计数)
过滤与转换:filter和map的使用
在实际开发中,经常需要从集合中筛选出符合条件的数据或将对象转换为另一种形式。
- 使用filter(Predicate)保留满足条件的元素。例如过滤出长度大于3的字符串:
list.stream().filter(s -> s.length() > 3).collect(Collectors.toList()); - 使用map(Function)将每个元素转换成新值。比如提取对象的某个字段:
users.stream().map(User::getName).collect(Collectors.toList()); - 可以链式组合多个操作,如先过滤再映射,逻辑清晰且易于维护
聚合与收集:collect和reduce的应用
Stream的终止操作不仅能遍历数据,还能完成统计和结构转换。
立即学习“Java免费学习笔记(深入)”;
-
collect()常用于将流转换为集合或其他结构。常用工具类Collectors提供便捷方法,如:
Collectors.toList()、Collectors.toSet()、Collectors.joining(",") - 对数值流求和、求最大值可用reduce()或专用的sum()、max()方法。例如:
numbers.stream().reduce(0, Integer::sum) - 分组操作通过Collectors.groupingBy()实现,如按用户年龄分组:
users.stream().collect(Collectors.groupingBy(User::getAge))
Stream API让集合处理更加高效和优雅。掌握其核心方法后,可以显著减少样板代码,提升开发效率。注意Stream本身不存储数据,也不会修改原集合,每次操作都会返回新流或结果。基本上就这些,用多了就熟练了。










