Java 语言 Stream流的6个高效写法 过滤 映射与收集的组合技巧

Java阿木 发布于 2025-06-25 7 次阅读


摘要:

Java 8 引入的 Stream API 为 Java 语言带来了强大的数据处理能力。Stream 流是一种高级抽象,允许以声明式方式处理数据集合。本文将围绕 Stream 流的过滤、映射与收集的组合技巧,探讨六个高效写法,帮助开发者更好地利用 Stream API 提高代码质量和效率。

一、

Stream API 是 Java 8 引入的一项重要特性,它允许开发者以声明式方式处理集合数据。Stream 流可以看作是集合的一种高级抽象,它提供了强大的数据处理能力。本文将重点介绍 Stream 流中的过滤、映射与收集的组合技巧,通过六个高效写法,帮助开发者更好地利用 Stream API。

二、Stream 流的基本概念

1. Stream 流的来源

Stream 流可以来自各种数据源,如集合、数组、文件等。以下是一个简单的示例:

java

List<String> list = Arrays.asList("Java", "Stream", "API", "Example");


Stream<String> stream = list.stream();


2. Stream 流的操作类型

Stream 流的操作类型分为中间操作和终端操作。中间操作不会产生结果,而是返回一个新的 Stream 对象;终端操作会产生结果,如收集、打印等。

三、过滤、映射与收集的组合技巧

1. 过滤(filter)

过滤操作用于筛选出满足条件的元素。以下是一个示例:

java

List<String> filteredList = list.stream()


.filter(s -> s.length() > 5)


.collect(Collectors.toList());


2. 映射(map)

映射操作用于将 Stream 中的元素转换成其他形式。以下是一个示例:

java

List<Integer> mappedList = list.stream()


.map(String::length)


.collect(Collectors.toList());


3. 收集(collect)

收集操作用于将 Stream 中的元素收集成不同的数据结构。以下是一个示例:

java

Set<String> uniqueList = list.stream()


.collect(Collectors.toSet());


四、六个高效写法

1. 高效写法一:链式调用

链式调用可以将多个操作组合在一起,提高代码的可读性和可维护性。以下是一个示例:

java

Set<String> uniqueList = list.stream()


.filter(s -> s.length() > 5)


.map(String::length)


.collect(Collectors.toSet());


2. 高效写法二:并行流

并行流可以提高大数据集的处理速度。以下是一个示例:

java

Set<String> uniqueList = list.parallelStream()


.filter(s -> s.length() > 5)


.map(String::length)


.collect(Collectors.toSet());


3. 高效写法三:使用 peek()

peek() 操作可以用于在 Stream 中打印或记录元素,但不会改变 Stream 的结果。以下是一个示例:

java

list.stream()


.filter(s -> s.length() > 5)


.peek(System.out::println)


.collect(Collectors.toList());


4. 高效写法四:使用 flatMap()

flatMap() 操作可以将多个 Stream 合并为一个 Stream。以下是一个示例:

java

List<String> list1 = Arrays.asList("Java", "Stream");


List<String> list2 = Arrays.asList("API", "Example");

Set<String> combinedList = Stream.concat(list1.stream(), list2.stream())


.collect(Collectors.toSet());


5. 高效写法五:使用 reduce()

reduce() 操作可以将 Stream 中的元素合并成一个值。以下是一个示例:

java

int sum = list.stream()


.mapToInt(String::length)


.reduce(0, Integer::sum);


6. 高效写法六:使用 sorted()

sorted() 操作可以对 Stream 中的元素进行排序。以下是一个示例:

java

List<String> sortedList = list.stream()


.sorted()


.collect(Collectors.toList());


五、总结

本文介绍了 Java Stream 流的过滤、映射与收集的组合技巧,并提出了六个高效写法。通过这些技巧,开发者可以更好地利用 Stream API 提高代码质量和效率。在实际开发中,合理运用 Stream 流可以简化代码,提高性能,使数据处理更加便捷。

注意:本文仅为示例,实际应用中请根据具体需求进行调整。