【169、stream流的常用方法案例】

61 阅读1分钟

Java 8 中的 Stream API 提供了许多方法,下面是一些常见的方法和示例:

  1. 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]
  1. 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]
  1. 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]
  1. 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]
  1. 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]
  1. limit():限制输出数量。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream()
    .limit(3)
    .collect(Collectors.toList());
// 输出:[1, 2, 3]
  1. skip():跳过指定数量的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream()
    .skip(2)
    .collect(Collectors.toList());
// 输出:[3, 4, 5]
  1. forEach():对每个元素执行一些操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
    .forEach(x -> System.out.print(x + " "));
// 输出:1 2 3 4 5
  1. reduce():将流中所有元素聚合成一个元素。
List<Integer> list = Arrays.asList(1,, 2, 3, 4, 5);
int result = list.stream()
    .reduce(0, (a, b) -> a + b);
// 输出:15
  1. collect():将流中的元素收集到集合中。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream()
    .filter(x -> x % 2 == 0)
    .collect(Collectors.toList());