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