Stream流
Mirco_Akira2025年11月21日大约 2 分钟
- Stream流是Java 8引入的一种用于处理集合数据的高级抽象。它允许我们以声明性方式处理数据,类似于SQL查询。Stream流可以对集合进行各种操作,如过滤、映射、排序和聚合等。
- 作用:简化集合或数组操作,提高代码的可读性和性能。
- 优势:Stream流大量结合了Lambda表达式,使代码更加简洁和易读,同时支持并行处理,提高性能。
下面提前介绍了一些常用的Stream流方法,请先阅读Stream流的使用步骤
| 方法名 | 说明 |
|---|
调用集合的stream()方法 | 通过集合创建一个顺序流 |
Stream<T> of(T... values) | 通过指定的值创建一个顺序流 |
Stream<T> of(T[] array) | 通过数组创建一个顺序流 |
| 方法名 | 说明 |
|---|
Stream<T> filter(Predicate<? super T> predicate) | 对流中的数据进行过滤 |
Stream<T> sorted() | 对流中的数据进行升序排序 |
Stream<T> sorted(Comparator<? super T> comparator) | 对流中的数据进行自定义排序 |
Stream<T> limit(long maxSize) | 截取流中的前N个数据 |
Stream<T> skip(long n) | 跳过流中的前N个数据 |
Stream<T> distinct() | 去除流中的重复数据 |
<R> Stream<R> map(Function<? super T, ? extends R> mapper) | 对流中的数据进行转换 |
static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b) | 合并两个流 |
| 方法名 | 说明 |
|---|
void forEach(Consumer<? super T> action) | 对流中的每个数据遍历,并执行指定操作 |
Optional<T> max(Comparator<? super T> comparator) | 获取流中的最大值 |
Optional<T> min(Comparator<? super T> comparator) | 获取流中的最小值 |
long count() | 计算流中的数据个数 |
Object[] toArray() | 将流转换为数组 |
List<T> collect(Collectors.toList()) | 将流收集为列表 |
Set<T> collect(Collectors.toSet()) | 将流收集为集合 |
Map<K, U> collect(Collectors.toMap(...)) | 将流收集为映射(Map) |

- 获取Stream流
- 通过集合的
stream()方法获取顺序流,或通过parallelStream()方法获取并行流。 - 通过数组的
Arrays.stream(array)方法获取Stream流,或通过Stream.of(array)方法。
- 调用Stream流的各种方法(中间方法)
- 对Stream流进行各种转换和过滤操作,如
filter()、map()、sorted()等。 - 中间操作是惰性求值的,只有在终端操作时才会执行。
- 中间方法调用后会返回新的Stream流,因此可以链式调用多个中间方法。
- 获取处理的结果(终结方法)
- 通过终结方法获取最终的处理结果,如
forEach()、collect()、reduce()等。 - 终结方法会触发Stream流的处理,并返回具体的结果。
- 终结方法调用后,不会返回新的Stream流,因此不能再使用。