java新特性Stream流
java新特性Stream流
kikockJava 8 新特性:Stream 流
Stream 是 Java 8 中引入的新特性,用于对集合进行声明式操作。它提供了一种更简洁、更易于使用的方式来处理数据,尤其是在处理大量数据时。Stream 操作可以分为两大类:
- 中间操作:对 Stream 进行操作,返回另一个 Stream。中间操作可以多次调用,并且不会立即执行。
- 终端操作:从 Stream 中提取结果,并返回一个值或另一个集合。终端操作只能调用一次,并且会触发 Stream 的执行。
Stream 的优点
- 简洁易用:Stream API 提供了简洁的语法,使代码更加易读易维护。
- 延迟执行:Stream 操作不会立即执行,而是在需要结果时才执行。这使得 Stream 操作可以高效地处理大量数据。
- 支持并行处理:Stream 操作可以并行执行,充分利用多核 CPU 的性能。
Stream 的基本用法
- 创建 Stream
可以通过以下几种方式创建 Stream:
- 从集合创建 Stream:可以使用 Collection.stream() 方法从集合中创建 Stream。
- 从数组创建 Stream:可以使用 Arrays.stream() 方法从数组中创建 Stream。
- 从其他 Stream 创建 Stream:可以使用 Stream 的各种操作方法从其他 Stream 创建 Stream。
- 中间操作
Stream 提供了丰富的中间操作,可以对 Stream 进行各种操作,例如:
- 过滤:使用 filter() 方法过滤 Stream 中的元素。
- 映射:使用 map() 方法将 Stream 中的元素映射为新的元素。
- 排序:使用 sorted() 方法对 Stream 中的元素进行排序。
- 聚合:使用 reduce() 方法将 Stream 中的元素聚合成一个值。
- 终端操作
Stream 提供了多种终端操作,可以从 Stream 中提取结果,例如:
- 收集:使用 collect() 方法将 Stream 中的元素收集到集合中。
- 查找:使用 findFirst() 或 findAny() 方法查找 Stream 中的第一个或任何一个元素。
- 匹配:使用 anyMatch() 或 allMatch() 方法检查 Stream 中的元素是否满足某个条件。
- 计数:使用 count() 方法统计 Stream 中的元素个数。
- Stream 可以用于各种场景
例如:
- 数据处理:Stream 可以高效地处理大量数据,例如过滤、排序、聚合等。
- 并行编程:Stream 可以并行执行,充分利用多核 CPU 的性能。
- 函数式编程:Stream 可以与函数式编程风格很好地结合,使代码更加简洁优雅。
Stream 流常用操作
1)forEach
1 | stringList.forEach(System.out::println); |
2)map
1 | stringList.stream().map(i->i.equals("hello")); |
3)filter
1 | stringList.stream().filter(i->i.equals("hello")); |
4)limit
1 | integerList.stream().limit(3); |
5)skip
1 | integerList.stream().skip(5).limit(3); |
6)distinct
1 | integerList.stream().distinct().collect(Collectors.toList()); |
7)sorted
1 | integerList.stream().sorted(); |
8)sorted(Comparator com)
1 | integerList.stream().sorted(Comparator.comparing(Integer::intValue)); |
9)Collectors 收集器
1 |
|
总结
Stream 是 Java 8 中引入的重要特性,它简化了集合操作,提高了代码的可读性和可维护性,并支持并行处理,是 Java 开发人员必备的技能之一。



