在 Java 中,Stream 流是一种处理集合数据的强大工具,它可以让你以声明式的方式对集合进行各种操作,使得代码更加简洁、高效和易于理解。
一、Stream 的特点
- 声明式编程
- 使用 Stream 流,你可以通过一系列的中间操作和一个终止操作来表达对集合数据的处理逻辑,而无需编写复杂的循环和条件判断语句。这种声明式的编程风格让代码更具可读性,并且更接近问题的本质描述。
- 懒加载
- Stream 流的中间操作是懒加载的,这意味着它们只有在终止操作被调用时才会真正执行。这种特性可以提高性能,因为只有在需要的时候才会进行实际的计算。
- 并行处理
- Java 的 Stream 流可以很容易地进行并行处理,只需在终止操作前调用
parallel()
方法即可。这使得在多核处理器上可以充分利用并行计算的优势,提高处理大量数据的效率。
- Java 的 Stream 流可以很容易地进行并行处理,只需在终止操作前调用
二、Stream 的常见操作
- 中间操作
filter(Predicate<T> predicate)
:过滤 Stream 中的元素,只保留满足给定谓词的元素。map(Function<T, R> mapper)
:将 Stream 中的每个元素转换为另一种类型。flatMap(Function<T, Stream<R>> mapper)
:将 Stream 中的每个元素转换为一个 Stream,然后将这些 Stream 扁平化为一个新的 Stream。sorted(Comparator<T> comparator)
:对 Stream 中的元素进行排序。
- 终止操作
forEach(Consumer<T> action)
:对 Stream 中的每个元素执行给定的操作。collect(Collector<T, A, R> collector)
:将 Stream 中的元素收集到一个结果容器中,如列表、集合或映射。reduce(BinaryOperator<T> accumulator)
:对 Stream 中的元素进行归约操作,返回一个单一的值。