欢迎访问宙启技术站
智能推送

Java Stream API:如何使用Stream函数进行数据处理?

发布时间:2023-07-01 07:06:27

Stream API 是 Java 8 中引入的一个强大的数据处理工具,它可以简化集合处理、并行计算等操作。使用 Stream API 可以将集合中的元素转换、过滤、排序等,使数据处理变得更加简洁、可读性更高。

要使用 Stream API,首先需要将一个集合或数组转换成 Stream 对象,可以通过 Collection 接口中的 stream() 方法或 Arrays 类中的 stream() 方法来实现。

下面介绍一些常用的 Stream 函数:

1. filter(Predicate<? super T> predicate): 根据指定的条件过滤元素,并将符合条件的元素组成新的 Stream 对象。

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());

上述代码中,过滤出集合中的偶数,并将结果收集到一个新的集合中。

2. map(Function<? super T,? extends R> mapper): 对元素进行映射,将元素转换为另一种类型,并将转换后的元素组成新的 Stream 对象。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<String> squaredNumbers = numbers.stream().map(n -> String.valueOf(n * n)).collect(Collectors.toList());

上述代码中,将集合中的每个元素进行平方并转换为字符串类型,最后将结果收集到一个新的集合中。

3. sorted(): 对元素进行排序。

List<Integer> numbers = Arrays.asList(5, 1, 3, 4, 2);
List<Integer> sortedNumbers = numbers.stream().sorted().collect(Collectors.toList());

上述代码中,对集合中的元素进行升序排序,并将结果收集到一个新的集合中。

4. distinct(): 除去重复的元素。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 2, 3, 1);
List<Integer> distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());

上述代码中,除去集合中重复的元素,并将结果收集到一个新的集合中。

5. limit(long maxSize): 限制 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());

上述代码中,限制集合中元素的个数为 5 个,并将结果收集到一个新的集合中。

以上只是 Stream API 中一些常用的函数,还有很多其他的函数可以用于数据处理。Stream API 的函数式编程特性使得代码更加简洁、灵活,可以提高代码的可读性和复用性。但在处理大数据量时,应注意合理使用并行流,以提高处理效率。