Java 8 中的 Stream API 提供了一种更加函数式和便捷的方式来处理集合数据。以下是一些常用的 Stream 方法,以及它们的简要说明和对应的例子。
-
filter(Predicate):根据指定的条件过滤集合中的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); // 输出结果为 [2, 4] -
map(Function):对集合中的每个元素进行映射转换。
List<String> words = Arrays.asList("hello", "world", "java"); List<Integer> wordLengths = words.stream() .map(String::length) .collect(Collectors.toList()); // 输出结果为 [5, 5, 4] -
flatMap(Function):将多个 Stream 合并成一个 Stream。
List<List<Integer>> nestedNumbers = Arrays.asList( Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6) ); List<Integer> allNumbers = nestedNumbers.stream() .flatMap(List::stream) .collect(Collectors.toList()); // 输出结果为 [1, 2, 3, 4, 5, 6] -
distinct():去除集合中的重复元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 4, 5); List<Integer> distinctNumbers = numbers.stream() .distinct() .collect(Collectors.toList()); // 输出结果为 [1, 2, 3, 4, 5] -
sorted():对集合中的元素进行排序。
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6); List<Integer> sortedNumbers = numbers.stream() .sorted() .collect(Collectors.toList()); // 输出结果为 [1, 1, 2, 3, 4, 5, 6, 9] -
limit(long):限制 Stream 的大小。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> limitedNumbers = numbers.stream() .limit(5) .collect(Collectors.toList()); // 输出结果为 [1, 2, 3, 4, 5] -
skip(long):跳过指定数量的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> skippedNumbers = numbers.stream() .skip(5) .collect(Collectors.toList()); // 输出结果为 [6, 7, 8, 9, 10] -
reduce():通过指定的操作对元素进行归约。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Optional<Integer> sum = numbers.stream() .reduce((a, b) -> a + b); // 输出结果为 15
这些只是 Stream API 中的一部分方法,但是它们是最常用的方法之一。
本文介绍了Java8中StreamAPI提供的关键功能,包括filter、map、flatMap、distinct、sorted、limit、skip和reduce等方法,展示了如何使用这些方法处理和操作集合数据。

被折叠的 条评论
为什么被折叠?



