MST

星途 面试题库

面试题:Java中Stream peek方法与map方法的执行顺序及相互影响

给定一个整数列表List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);,请编写一段Java代码,使用Stream流对该列表进行操作,先通过peek方法打印每个元素,然后使用map方法将每个元素翻倍,最后输出结果。并解释peek方法与map方法执行的先后顺序以及peek方法对后续map操作的影响。
43.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.Arrays;
import java.util.List;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        numbers.stream()
               .peek(System.out::println)
               .map(n -> n * 2)
               .forEach(System.out::println);
    }
}
  1. peek方法与map方法执行先后顺序
    • 在Stream流操作中,peek方法和map方法按照它们在流操作链中出现的顺序执行。即先执行peek方法,再执行map方法。
  2. peek方法对后续map操作的影响
    • peek方法主要用于调试和观察流中的元素,它不会改变流中元素本身。它只是在流元素经过该操作时,对元素进行一些额外的操作(如打印),但不会影响后续map操作对元素的处理逻辑。map方法会根据传入的函数对每个元素进行转换,peek方法的操作不会干扰map方法的转换逻辑,只是在map方法执行之前,可以让开发者查看流中的元素状态。