MST

星途 面试题库

面试题:Java Lambda表达式在集合操作中的应用

假设有一个List<Integer> ,包含1到10的整数。使用Java Lambda表达式筛选出其中的偶数,并将其平方后,再求这些平方数的总和。同时,请阐述在这种场景下Lambda表达式和Stream API结合使用的设计思路。
13.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 代码实现
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);
    }
}
  1. 设计思路
    • 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 中的平方数累加起来得到总和。