Java Stream 中间操作
在 Java 8 中引入的 Stream API 是处理集合的强大工具,它允许以函数式编程的方式对数据进行操作。Stream API 的操作分为两类:中间操作和终端操作。本文将详细介绍 Stream 中的各种中间操作。
什么是中间操作?
中间操作是指返回新 Stream 的操作,这使得我们可以将多个中间操作链接起来形成一个处理管道。中间操作的一个重要特点是惰性求值,也就是说,在遇到终端操作之前,中间操作不会被执行。
备注
中间操作与终端操作的主要区别:中间操作返回一个新的 Stream,而终端操作会产生一个结果或副作用。
常用的中间操作
1. filter - 过滤元素
filter
操作接受一个谓词(返回布尔值的函数 )作为参数,并返回一个只包含满足该谓词的元素的新 Stream。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出: [2, 4, 6]
2. map - 映射元素
map
操作将每个元素转换成另一个对象,通过提供的函数应用于每个元素,生成新的元素。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<Integer> nameLengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(nameLengths); // 输出: [5, 3, 7]