侧边栏壁纸
博主头像
Hello石狐

平凡的日子里,也要习惯记录

  • 累计撰写 18 篇文章
  • 累计创建 4 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Java Stream API

石狐
2025-07-09 / 0 评论 / 0 点赞 / 8 阅读 / 0 字

JDK 8 引入的 Stream API 是 Java 中用于处理集合和数据流的强大工具。它让数据操作更加简洁和直观,支持声明式编程方式,可以轻松进行集合的筛选、映射、排序、聚合等操作。以下是一些 Stream 的核心特性:

1. 流水线式操作

Stream 支持将多个操作串联起来执行,类似流水线处理数据。每个操作返回一个新的 Stream,允许进行流式处理(即懒执行)。例如:

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

   int result = numbers.stream()
    .filter(n -> n % 2 == 0)
    .mapToInt(n -> n * n)
    .sum();

2. 支持并行流

Stream 提供了对并行操作的支持,能够利用多核处理器并行处理数据。通过 .parallel() 方法,可以轻松将流转为并行流,从而提高处理性能(当然,只有在数据量足够大时,才能体现并行流的优势)。

   List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

   int result = numbers.parallelStream()
    .filter(n -> n % 2 == 0)
    .mapToInt(n -> n * n)
    .sum();

3. 惰性求值

Stream 操作默认是惰性求值(Lazy Evaluation)的。也就是说,流的计算会被延迟,直到需要结果时才会开始执行。通过这种方式,Stream 操作可以避免不必要的计算和遍历,提升性能。

   Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
   stream.filter(n -> n > 3).forEach(System.out::println); // 只会打印大于 3 的元素

4. 内存高效

Stream 是懒加载的,因此它并不会立即加载所有数据。它会根据需要逐步计算和处理数据,这对于处理大规模数据集非常高效。

5. 强大的操作支持

- map:用于将每个元素转化为另一个元素。

- filter:用于根据给定的条件筛选元素。

- reduce:对流中的元素进行聚合(比如求和、最大值、最小值等)。

- collect:将流转化为集合或其他类型的容器。

6. 终端操作

Stream 通过“终端操作”来触发实际计算。常见的终端操作包括 forEach、`collect`、`reduce` 等,它们一旦调用,流中的数据就会开始被处理并返回结果。

例如,使用 collect 可以将流的数据收集到集合中:

List<Integer> evenNumbers = numbers.stream()
  .filter(n -> n % 2 == 0)
  .collect(Collectors.toList());

总结来说,Stream 使得数据操作更加声明式和简洁,同时提供了强大的功能和高效的性能优化,尤其适合处理集合和大数据集时的操作。

0

评论区