Java 8 Stream API:高效处理集合数据

本贴最后更新于 296 天前,其中的信息可能已经物是人非

引言

Java 8 引入了 Stream API,它是一种用于高效处理集合数据的工具。Stream API 提供了一种声明式的编程方式,可以让你更轻松地对集合进行过滤、映射、排序等操作。本教程将介绍 Java Stream API 的基本概念、用法以及在实际开发中的应用。

1. 了解 Stream API

Stream API 是 Java 中用于处理集合数据的工具。它允许你以一种声明式的方式对数据流进行操作,而无需显式编写循环和条件语句。Stream API 提供了丰富的操作方法,如过滤、映射、排序、聚合等,可以极大地简化集合处理的代码。

2. 创建和操作 Stream

要使用 Stream API,首先需要将集合转换为 Stream 对象。可以通过集合的 stream()方法或 parallelStream()方法来创建 Stream。然后,可以使用 Stream 的各种操作方法来处理数据流。

下面是一个简单的示例,展示了如何创建和操作 Stream:

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        // 创建Stream
        Stream<Integer> stream = numbers.stream();

        // 对Stream进行操作
        stream.filter(n -> n % 2 == 0)
              .map(n -> n * n)
              .forEach(System.out::println);
    }
}

在上面的代码中,我们首先创建了一个整数列表 numbers。然后,通过调用列表的 stream()方法创建了一个 Stream 对象。接下来,我们使用 Stream 的 filter()方法过滤出偶数,使用 map()方法对每个元素进行平方操作,最后使用 forEach()方法打印结果。

3. Stream 操作的分类

Stream 操作可以分为中间操作(Intermediate Operations)和终端操作(Terminal Operations)。中间操作是指返回一个新 Stream 的操作,可以连续执行多个中间操作。终端操作是指返回非 Stream 结果的操作,执行终端操作后,Stream 将被消费,不能再执行其他操作。

下面是一些常见的 Stream 操作示例:

  • 中间操作:filter()、map()、sorted()、distinct()等。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.stream()
       .filter(n -> n % 2 == 0)
       .map(n -> n * n)
       .sorted()
       .forEach(System.out::println);
  • 终端操作:forEach()、collect()、reduce()、count()等。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

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

System.out.println("Sum: " + sum);

4. 并行流与串行流

Stream API 提供了并行流和串行流两种处理方式。并行流可以在多个线程上同时处理数据,适用于大数据量和复杂计算的场景。串行流按顺序逐个处理数据,适用于简单计算和较小数据量的场景。

下面是一个示例,展示了如何使用并行流处理数据:

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

numbers.parallelStream()
       .filter(n -> n % 2 == 0)
       .map(n -> n * n)
       .forEach(System.out::println);

在上面的代码中,我们通过调用 parallelStream()方法创建了一个并行流,然后对流进行过滤、映射和打印操作。

5. 使用 Stream API 进行集合操作

Stream API 提供了丰富的操作方法,使得集合的处理变得更加简洁和灵活。你可以使用 Stream API 进行集合的过滤、映射、排序、聚合等操作,而无需编写繁琐的循环和条件语句。

下面是一些使用 Stream API 进行集合操作的示例:

  • 过滤数据:
List<String> names = Arrays.asList("John", "Anna", "Peter");

List<String> filteredNames = names.stream()
                                  .filter(name -> name.length() > 4)
                                  .collect(Collectors.toList());

System.out.println("Filtered names: " + filteredNames);
  • 映射数据:
List<String> names = Arrays.asList("John", "Anna", "Peter");

List<String> upperCaseNames = names.stream()
                                   .map(name -> name.toUpperCase())
                                   .collect(Collectors.toList());

System.out.println("Upper case names: " + upperCaseNames);
  • 排序数据:
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);

List<Integer> sortedNumbers = numbers.stream()
                                      .sorted()
                                      .collect(Collectors.toList());

System.out.println("Sorted numbers: " + sortedNumbers);

结论

Java Stream API 是一种强大而灵活的工具,用于高效处理集合数据。本教程介绍了 Stream API 的基本概念、创建和操作 Stream 的方法,以及 Stream 操作的分类和并行流与串行流的区别。通过掌握 Stream API 的知识,你可以更轻松地对集合进行过滤、映射、排序等操作,提高代码的简洁性和可读性。

希望本教程能够帮助你理解和应用 Java Stream API。祝你在使用 Stream API 时取得成功!

注意:本文中的示例代码基于 Java 8 版本。

注意:文章如果有错误的地方,烦请各位大佬在评论区指正,或联系作者进行修改,万分感谢!!!

作者:永夜 Evernight

个人博客:luomuren.top

公众号:扫码_搜索联合传播样式-标准色版

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8207 回帖 • 1 关注
1 操作
luomuren 在 2023-07-11 16:14:27 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...