Java Stream API 常用操作技巧

Java 8 引入的 Stream API 为集合操作提供了一种声明式编程模型,极大地简化了数据处理的复杂性。本文将介绍 Java Stream API 的几种常用操作方式,帮助开发者更高效地处理集合数据。

1. 过滤(Filtering)

过滤是选择集合中满足特定条件的元素。使用 filter 方法可以轻松实现:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> filtered = numbers.stream()
                                 .filter(n -> n % 2 == 0)
                                 .collect(Collectors.toList());
// filtered 将包含 [2, 4]

2. 映射(Mapping)

映射是将集合中的每个元素转换成另一种形式。通过 map 方法,我们可以轻松转换数据:

java 复制代码
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> upperCaseNames = names.stream()
                                   .map(String::toUpperCase)
                                   .collect(Collectors.toList());
// upperCaseNames 将包含 ["ALICE", "BOB", "CHARLIE"]

3. 排序(Sorting)

排序是将集合中的元素按照一定的顺序排列。使用 sorted 方法可以轻松实现:

java 复制代码
List<Integer> numbers = Arrays.asList(5, 3, 4, 1, 2);
List<Integer> sortedNumbers = numbers.stream()
                                      .sorted()
                                      .collect(Collectors.toList());
// sortedNumbers 将包含 [1, 2, 3, 4, 5]

4. 去重(Removing Duplicates)

去重是去除集合中的重复元素。distinct 方法可以快速去除重复项:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
List<Integer> uniqueNumbers = numbers.stream()
                                      .distinct()
                                      .collect(Collectors.toList());
// uniqueNumbers 将包含 [1, 2, 3, 4, 5]

5. 聚合操作(Aggregation)

聚合操作可以对集合中的元素进行求和、求最大值等操作。reduce 方法是实现聚合操作的关键:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                  .reduce(0, Integer::sum);
// sum 将为 15

6. 匹配(Matching)

匹配操作用于检查集合中的元素是否满足某个条件。anyMatch、allMatch 和 noneMatch 是常用的匹配方法:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean allEven = numbers.stream()
                          .allMatch(n -> n % 2 == 0);
// allEven 将为 false

7. 查找(Finding)

查找操作用于在集合中查找满足条件的第一个或任意元素。findFirst 和 findAny 是实现查找的常用方法:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> firstEven = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .findFirst();
// firstEven 将包含 2

8. 计数(Counting)

计数操作用于计算满足条件的元素数量。count 方法可以快速实现计数:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream()
                     .filter(n -> n % 2 == 0)
                     .count();
// count 将为 2

9. 收集(Collecting)

收集操作用于将流中的元素收集到一个特定的数据结构中。collect 方法是实现收集的关键:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Set<Integer> set = numbers.stream()
                          .collect(Collectors.toSet());
// set 将包含 [1, 2, 3, 4, 5]

10. 并行流(Parallel Streams)

并行流可以利用多核处理器的优势,提高数据处理的效率。将普通流转换为并行流非常简单:

java 复制代码
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
                 .reduce(0, Integer::sum);
// sum 将为 15

通过这些基本的 Stream API 操作,开发者可以构建出复杂且高效的数据处理流程。Java Stream API 的强大之处在于其链式调用和内联操作,使得代码不仅简洁而且易于阅读和维护。

相关推荐
Wang's Blog1 分钟前
Java 项目实战: 交友项目 - 阿里云 OSS 入门案例:从创建 Bucket 到上传拿到可访问 URL
java·阿里云·交友
裕晟资质规划1 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
念念清晰1 小时前
000-OpenJDK17 源码构建:MacOS环境(M芯片)
java·后端
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 百度人脸识别入门案例
java·百度·交友
来福猿2 小时前
SpringCloud Config 源码分析:配置拉取、刷新与多环境管理
后端·spring·spring cloud
wuminyu2 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
电商API_180079052472 小时前
反向海淘多币种结算:汇率该在哪个时点被冻结
java·开发语言·数据库·跨境电商·1688 api
开开心心就好3 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
Pniubi3 小时前
模拟一个充值送token怎么保证幂等?一致性?原子性?
java
企业数字化笔记3 小时前
多租户配额怎么控制?用量口径、并发预留与超额处理的实现方法
java·数据库·spring boot