MST

星途 面试题库

面试题:Java中Stream中间处理方法链式调用的原理

请阐述在Java Stream中,中间处理方法如filter、map等进行链式调用的原理是什么,为什么可以这样调用?并举例说明如何使用链式调用筛选出一个整数列表中的偶数,并将其平方。
31.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 原理
    • 在Java Stream中,中间处理方法(如filtermap等)返回的是一个新的Stream对象。这使得可以在返回的Stream对象上继续调用其他中间处理方法,从而实现链式调用。这种设计基于Java的方法调用机制和Stream API的设计理念,Stream接口定义了一系列中间操作方法,每个方法操作后返回新的Stream实例,以便继续进行后续操作。
  2. 为什么可以这样调用
    • 因为Stream接口的中间操作方法的返回类型都是Stream,遵循了连贯接口(fluent interface)的设计模式。这种设计模式允许方法调用像自然语言一样连贯,提高了代码的可读性和简洁性。
  3. 示例代码
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamChainExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> squaredEvenNumbers = numbers.stream()
               .filter(n -> n % 2 == 0)
               .map(n -> n * n)
               .collect(Collectors.toList());
        System.out.println(squaredEvenNumbers);
    }
}

在上述代码中,首先通过stream()方法将List转换为Stream,然后使用filter方法筛选出偶数,接着用map方法将筛选出的偶数进行平方,最后通过collect方法将结果收集到一个List中并输出。