- 代码实现:
import java.util.Arrays;
import java.util.List;
public class LambdaAndStreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sum);
}
}
- 设计思路:
- Stream API:Stream API 提供了一种高效处理集合数据的方式,它允许将数据处理操作以一种类似于流水线的方式进行连接。Stream 本身不存储数据,而是在数据源(如集合)上进行操作。
- Lambda 表达式:
- filter 操作:
filter(n -> n % 2 == 0)
使用 Lambda 表达式作为参数传递给 filter
方法。这里的 Lambda 表达式 n -> n % 2 == 0
定义了筛选偶数的条件,filter
方法会遍历 Stream 中的每个元素,将满足该条件的元素保留,不满足的过滤掉。
- map 操作:
map(n -> n * n)
使用 Lambda 表达式 n -> n * n
,它将 Stream 中经过 filter
操作后的每个元素进行平方操作,即对每个偶数进行平方,生成一个新的 Stream。
- reduce 操作:
reduce(0, Integer::sum)
用于将 Stream 中的元素进行累加操作。reduce
方法接收两个参数,第一个参数 0
是初始值,第二个参数 Integer::sum
是一个方法引用,它本质上也是一个 Lambda 表达式,在这里表示将两个整数相加的操作,通过这个操作将 Stream 中的平方数累加起来得到总和。