【Stream流的常用方法案例】
Java 8 中的 Stream API 提供了许多方法,下面是一些常见的方法和示例:
filter():过滤出符合条件的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());
// 输出:[2, 4]
map():将元素转换成新的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().map(x -> x * x).collect(Collectors.toList());
// 输出:[1, 4, 9, 16, 25]
flatMap():将元素转换成新的 Stream,并将多个 Stream 合并成一个 Stream。
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4, 5), Arrays.asList(6, 7, 8, 9));
List<Integer> result = list.stream().flatMap(Collection::stream).collect(Collectors.toList());
// 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
distinct():去重。
List<Integer> list = Arrays.asList(1, 2, 2, 3, 3, 4, 5);
List<Integer> result = list.stream().distinct().collect(Collectors.toList());
// 输出:[1, 2, 3, 4, 5]
sorted():排序。
List<Integer> list = Arrays.asList(5, 3, 1, 4, 2);
List<Integer> result = list.stream().sorted().collect(Collectors.toList());
// 输出:[1, 2, 3, 4, 5]
limit():限制输出数量。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().limit(3).collect(Collectors.toList());
// 输出:[1, 2, 3]
skip():跳过指定数量的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().skip(2).collect(Collectors.toList());
// 输出:[3, 4, 5]
forEach():对每个元素执行一些操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().forEach(x -> System.out.print(x + " "));
// 输出:1 2 3 4 5
reduce():将流中所有元素聚合成一个元素。
List<Integer> list = Arrays.asList(1,, 2, 3, 4, 5);
int result = list.stream().reduce(0, (a, b) -> a + b);
// 输出:15
collect():将流中的元素收集到集合中。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());