Java 8 引入的函数式数据处理方式
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();
1. 链式操作:多个操作可以串联在一起
2. 惰性求值:中间操作不会立即执行,遇到终止操作才执行
3. 不修改源数据:总是返回新结果,原集合不变
4. 支持并行处理:parallelStream() 可以利用多核 CPU
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long result = list.stream()
.filter(n -> n > 2)
.count();
System.out.println(result);