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

Java Stream Collectors主要 API 详解

Collectors 是 Java 8 Stream API 的核心工具,用于将流的元素收集分组统计转换为其他数据结构。以下是其主要 API 的使用方法与完整示例。


一、基础方法

1. Collectors.toList()

将流转换为 List

List<String> list = Stream.of("a", "b", "c")
.collect(Collectors.toList());

2. Collectors.toSet()

将流转换为 Set(自动去重)。

Set<String> set = Stream.of("a", "a", "b")
.collect(Collectors.toSet());

3. Collectors.toCollection(Supplier)

自定义目标集合类型(如 LinkedListConcurrentHashMap)。

LinkedList<String> linkedList = Stream.of("a", "b", "c")
.collect(Collectors.toCollection(LinkedList::new));

二、映射与合并

4. Collectors.toMap

将流转换为 Map,需指定键和值的提取函数。

基础用法
Map<String, User> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, user -> user));
处理键冲突
Map<String, User> userMap = userList.stream()
.collect(Collectors.toMap(
User::getId,
user -> user,
(existing, replacement) -> existing // 保留第一个
));

5. Collectors.collectingAndThen

在收集操作完成后对结果进行进一步处理。

示例 1:转换为不可变集合
Map<String, List<User>> usersByGender = userList.stream()
.collect(Collectors.groupingBy(
User::getGender,
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList // 转换为不可变 List
)
));
示例 2:转换为数组
Map<String, User[]> usersByGenderAsArray = userList.stream()
.collect(Collectors.groupingBy(
User::getGender,
Collectors.collectingAndThen(
Collectors.toList(),
list -> list.toArray(new User[0]) // 转换为数组
)
http://www.dtcms.com/a/548583.html

相关文章:

  • Mac如何安装mysql和完全卸载mysql
  • 【Docker】【03.使用docker搭建ubuntu20.04 Qt5.12 开发环境】
  • uni-app 上架 iOS 应用全流程 从云打包到开心上架(Appuploader)免 Mac 上传发布指南
  • 深圳公司网站设计公司wordpress春菜
  • 广东省省考备考(第一百三十七天10.30)——资料分析、数量关系(强化训练)
  • 【SpringMVC】SpringMVC 小案例:加法计算器初步理解前后端接口交互与数据处理
  • 微软全球服务中断:Azure、365、Xbox及Minecraft等多平台受影响
  • 【QT常用技术讲解】可拖拽文件的Widget--QListWidget
  • 手机网站标准家政公司怎么注册
  • 上海网站建设500元wordpress在线支付表单
  • 厦门市小学生信息学竞赛(C++)初赛总复习(第二章 算法知识与数据结构 -第二节 数据结构 第三节 栈)
  • 【OD刷题笔记】- 5G网络建设
  • 基于毫米波雷达的汽车变道辅助系统(LCA)原理与实现
  • 赋能智慧货运:视频汇聚平台EasyCVR打造货运汽车安全互联网视频监控与管理方案
  • 数图科技赋能长春欧亚:构建零售 “智慧大脑”,让陈列调整、决策响应快人一步
  • MongoDB 正则表达式
  • 【超级详细】正点原子RK3588安装和编译SDK
  • AI 图像生成技术发展时间脉络:从 GAN 到多模态大模型的知名模型概略解析
  • “一网通办”查询响应优化:金仓索引如何支撑政务高效服务
  • 微信小程序(H5)上传文件到阿里云 OSS(使用 STS 临时凭证)
  • 建设局网站打不开是什么原因先做网站先备案
  • Bootstrap 按钮
  • Qt 外观之Qt样式表(QSS)
  • Adobe Lightroom安卓版(手机调色软件)绿色版
  • 服务器 Web 安全:Nginx 配置 X-Frame-Options 与 CSP 头,防御 XSS 与点击劫持
  • 嵌入式AI Arm_linux_第一个Demo_让IPU跑起来
  • Solon 项目升级 JDK 25
  • 手写自己的小型react
  • 3秒传输GB级文件:FastSend让P2P共享告别云存储依赖
  • 【Docker】P2 Docker 命令:从Nginx部署到镜像分享的全流程指南