Stream 常用操作

Stream API 提供了一种函数式的方式来处理集合数据,支持过滤、映射、排序、聚合等操作。

Stream API 示例
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// 过滤偶数
List<Integer> evenNumbers = numbers.stream()
    .filter(n -> n % 2 == 0)
    .collect(Collectors.toList());
System.out.println(evenNumbers);  // [2, 4, 6, 8, 10]

// 每个数字乘以2
List<Integer> doubled = numbers.stream()
    .map(n -> n * 2)
    .collect(Collectors.toList());

// 求和
int sum = numbers.stream()
    .mapToInt(Integer::intValue)
    .sum();

// 排序
List<Integer> sorted = numbers.stream()
    .sorted((a, b) -> b - a)  // 降序
    .collect(Collectors.toList());

// 统计信息
long count = numbers.stream().count();
int max = numbers.stream().mapToInt(n -> n).max().getAsInt();
double average = numbers.stream().mapToInt(n -> n).average().getAsDouble();
✅ Stream 特点

1. 链式操作:多个操作可以串联在一起
2. 惰性求值:中间操作不会立即执行,遇到终止操作才执行
3. 不修改源数据:总是返回新结果,原集合不变
4. 支持并行处理:parallelStream() 可以利用多核 CPU

课后练习

以下 Stream 代码的输出是什么?

代码片段
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long result = list.stream()
    .filter(n -> n > 2)
    .count();
System.out.println(result);
A 2
B 5
C 3
D 编译错误