当前位置: 首页 > news >正文

Java Stream API 常用操作技巧

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

1. 过滤(Filtering)

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

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 方法,我们可以轻松转换数据:

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 方法可以轻松实现:

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 方法可以快速去除重复项:

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 方法是实现聚合操作的关键:

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 是常用的匹配方法:

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 是实现查找的常用方法:

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 方法可以快速实现计数:

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 方法是实现收集的关键:

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)

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

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 的强大之处在于其链式调用和内联操作,使得代码不仅简洁而且易于阅读和维护。

http://www.lryc.cn/news/393831.html

相关文章:

  • SwiftData 模型对象的多个实例在 SwiftUI 中不能及时同步的解决
  • Android 系统网络、时间服务器配置修改
  • 类和对象深入理解
  • 在postgres数据库中的几个简单用法
  • SQLServer Manager Studio扩展开发从入门到弃坑
  • ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)
  • 【篇三】在vue3上实现阿里云oss文件直传
  • OceanBase v4.2 特性解析:对Json与Xml的扩展支持
  • 《框架封装 · 统一异常处理和返回值包装》
  • 深入WebKit:揭秘复杂文档的高效渲染之道
  • 进程的控制-孤儿进程和僵尸进程
  • 【Unity navigation面板】
  • 二刷算法训练营Day53 | 动态规划(14/17)
  • 将缓冲文件写到磁盘中的命令sync
  • 灵活视图变换器:为扩散模型设计的革新图像生成架构
  • [终端安全]-1 总体介绍
  • Mysql5.7并发插入死锁问题
  • 网络“ping不通”,如何排查和解决呢?
  • 日常学习--20240706
  • 入门PHP就来我这(高级)12 ~ 获取数据
  • AIGC专栏12——EasyAnimateV3发布详解 支持图文生视频 最大支持960x960x144帧视频生成
  • 【python】python猫眼电影数据抓取分析可视化(源码+数据集+论文)【独一无二】
  • Android 四大组件
  • 【Python】已解决:ModuleNotFoundError: No module named ‘nltk’
  • 【Docker系列】Docker 命令行输出格式化指南
  • 使用Netty构建高性能的网络应用
  • C++11新特性【下】{lambda表达式、可变模板参数、包装器}
  • SpringBoot使用手册
  • HTML CSS 基础复习笔记 - 列表使用
  • 017-GeoGebra基础篇-微积分函数求解圆弧面积问题