MST

星途 面试题库

面试题:Java中Java Stream与传统foreach在代码简洁性方面的中等难度题

给定一个整数列表,要求使用Java Stream和传统foreach两种方式,分别实现筛选出所有偶数并计算其平方和,对比两者代码,阐述Stream方式在简洁性上的优势。
35.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

使用传统foreach方式

import java.util.ArrayList;
import java.util.List;

public class TraditionalForeachExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        int sumOfSquares = 0;
        for (int number : numbers) {
            if (number % 2 == 0) {
                sumOfSquares += number * number;
            }
        }
        System.out.println("传统foreach方式计算结果: " + sumOfSquares);
    }
}

使用Java Stream方式

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        int sumOfSquares = numbers.stream()
                .filter(n -> n % 2 == 0)
                .mapToInt(n -> n * n)
                .sum();
        System.out.println("Java Stream方式计算结果: " + sumOfSquares);
    }
}

Stream方式在简洁性上的优势

  1. 代码行数:Stream方式使用链式调用,将筛选、映射和求和操作合并在一行,代码更为紧凑,而传统foreach方式需要更多的代码行数来实现同样功能,包括初始化变量、循环体以及条件判断等。
  2. 语义表达:Stream方式通过filtermapToIntsum等方法,语义更加清晰直接,直观地表达了“筛选偶数”、“映射为平方”、“求和”的操作意图。传统foreach方式逻辑分散在循环体中,阅读时需要关注更多细节。