引言
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
公众号:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于