Stream流学习mapping

Stream流学习mapping

  • 一、前言
    • 1. 基本用法
    • 2. 结合 `Collectors.mapping`
    • 3. 自定义转换函数
    • 4.总结


一、前言

在Java的Stream API中,mapping 是一个非常有用的中间操作,它可以将流中的元素映射成其他形式。通常与 Collectors.groupingBy 或者 Collectors.mapping 结合使用,用于对流中的元素进行转换和处理。

1. 基本用法

mapping 的基本用法是将流中的元素映射为另一种类型,然后可以结合其他收集器将映射后的结果收集起来。

例如,假设有一个 Person 类:

class Person {private String name;private int age;// 省略构造函数和getter/setter
}

现在我们想要将 Person 对象的名字映射为大写形式的列表:

List<Person> persons = Arrays.asList(new Person("Alice", 23),new Person("Bob", 25),new Person("Charlie", 30)
);List<String> namesInUpperCase = persons.stream().map(Person::getName) // 映射为名字的流.map(String::toUpperCase) // 将名字转换为大写形式.collect(Collectors.toList());System.out.println(namesInUpperCase); // 输出 [ALICE, BOB, CHARLIE]

2. 结合 Collectors.mapping

Collectors.mapping 收集器允许我们在收集流中元素时,对流中的每个元素应用一个转换函数,并将转换后的结果收集起来。

例如,如果我们想要将 Person 对象按照年龄进行分组,并且每组只保留他们的名字:

Map<Integer, List<String>> namesByAge = persons.stream().collect(Collectors.groupingBy(Person::getAge, // 按照年龄分组Collectors.mapping(Person::getName, Collectors.toList()) // 将名字映射并收集到列表中));System.out.println(namesByAge);

输出结果将会是按照年龄分组后的每个年龄组的人员名单列表。

3. 自定义转换函数

在一些情况下,可能需要自定义转换函数来将流中的元素映射为不同的形式。例如,将字符串转换为它们的长度:

List<String> words = Arrays.asList("apple", "banana", "orange");List<Integer> wordLengths = words.stream().map(String::length) // 将字符串映射为它们的长度.collect(Collectors.toList());System.out.println(wordLengths); // 输出 [5, 6, 6]

这里使用了 map(String::length) 将每个字符串映射为它们的长度。

4.总结

mapping 在Java Stream API中是一个重要的操作,它使得我们能够对流中的元素进行灵活的转换和映射,从而更方便地处理和操作数据。结合其他操作如 groupingBy 或者 toList,可以实现复杂的数据处理需求,提高代码的简洁性和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI 大模型训练数据白皮书 2024】

文末有福利&#xff01; 自《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》发布以来&#xff0c;我国数据要素建设不断深入&#xff0c;在国家数据局等 17 部门联合印发的《“数据要素 ” 三年行动计划&#xff08;2024 - 2026 年&#xff09;》进一步明确…

z-index的工作原理

z-index的工作原理 HTML文档中的元素却是存在于三个维度之中。除了大家熟知的平面画布中的x轴和y轴&#xff0c;还有控制第三维度的z轴。 像 margin , float , offset 这些属性&#xff0c;控制着元素在x轴和y轴上的表现形式一样。 z-index 这个属性控制着元素在z轴上的表现形…

不使用AMap.DistrictSearch,通过poi数据绘制省市县区块

个人申请高德地图key时无法使用AMap.DistrictSearch&#xff0c;可以通过poi数据绘制省市县区块 1.进入POI数据网站找到需要的省市县&#xff0c;下载对应的GeoJson文件 &#xff0c;此处为poi数据网站链接 2.​ 处理geoJson数据&#xff0c;可以直接新建json文件&#xff0c;…

FIPS PUB 196 ENTITY AUTHENTICATION USING PUBLIC KEY CRYPTOGRAPHY

部分原文 3.3 Mutual authentication protocol The following mutual entity authentication protocol is based on Section 522. “Three pass authentication”, ofISO/IEC 9798-3. Certain authentication token fields and protocol steps are specified in greater deta…

在Windows命令行中设置定时关机

在Windows命令行中设置定时关机&#xff0c;你可以使用shutdown命令。下面是几个实用的例子&#xff1a; 立即关机: shutdown /s /t 0延迟关机: 假设你想在30分钟后关机&#xff0c;可以使用&#xff08;30分钟等于1800秒&#xff09;:shutdown /s /t 1800定时关机: 如果你想在…

【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】

目录 案例背景 具体问题 1. 环境准备 小李的理解 知识点 2. 数据准备 2.1 导入必要的库和数据集 小李的理解 知识点 2.2 数据集基本信息 小李的理解 知识点 注意事项 3. 数据预处理 3.1 划分训练集和测试集 小李的理解 知识点 注意事项 3.2 数据标准化 小李…

controller不同的后端路径对应vue前端传递数据发送请求的方式,vue请求参数 param 与data 如何对应后端参数

目录 案例一&#xff1a; 为什么使用post发送请求&#xff0c;参数依旧会被拼接带url上呢&#xff1f;这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后&#xff0c;data会以请求体传递 补充&#xff1a;后端controller 参数上如果没写任何注解&#xff0c…

第二高的薪水

第二高的薪水&#xff1a; 描述 查询并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水&#xff0c;查询应该返回 null(Pandas 则返回 None) pandas import pandas as pddef second_highest_salary(employee: pd.DataFrame):# 1. 删除所有重复的薪水.employee emp…

第一后裔进不去游戏怎么办 第一后裔免费加速器推荐

Steam年度最热心愿榜单第五的游戏终于上线了&#xff0c;包好玩的新游&#xff0c;第一后裔&#xff0c;为什么说他肯定好玩呢&#xff1f;因为游戏第一次测试在两年前就开始了&#xff0c;中间也断断续续测试了好多次&#xff0c;很多小伙伴都是体验过游戏的&#xff0c;经过多…

MySQL 9.0正式版本来了!

MySQL 9.0 第一个正式版本于 2024 年 7 月 1 日发布&#xff0c;这是一个创新版&#xff0c;意味着它会增加一些新功能、修复一些问题并弃用一些旧功能。 性能相关 MySQL 9.0 支持将 EXPLAIN ANALYZE 命令输出的 JSON 数据存储到用户定义的变量中&#xff0c;语法如下&#x…

【硬件模块】PN532 NFC读卡串口通信

PN532 PN532是一款功能丰富的非接触式通讯收发模块&#xff0c;其基于8051单片机核心&#xff0c;集成了多种通信接口和工作模式&#xff0c;以满足不同应用场景的需求。以下是PN532功能相关的详细介绍&#xff1a; 多种通信接口&#xff1a;PN532支持I2C、SPI和UART&#xff0…

MySQL的安装和环境配置

1.下载MySQL安装MySQL 选Custom选项为高级自定义模式 2.配置MySQL环境 安装好之后&#xff0c;在桌面右键点击我的电脑(有些是此电脑)&#xff0c;然后点击属性&#xff0c;进入系统信息设置&#xff0c;接着点击高级&#xff0c;进入环境变量界面&#xff0c;进入环境变量界面…

【Spring Boot】Java 持久层 API:JPA

Java 持久层 API&#xff1a;JPA 1.Spring Data1.1 主要模块1.2 社区模块 2.JPA3.使用 JPA3.1 添加 JPA 和 MySQL 数据库的依赖3.2 配置数据库连接信息 4.了解 JPA 注解和属性4.1 常用注解4.2 映射关系的注解4.3 映射关系的属性 5.用 JPA 构建实体数据表 1.Spring Data Spring…

Redis基础教程(十):HyperLogLog

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Linux爱好者能对Linux痴迷到什么程度?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;曾经想帮助全世界的人卸载掉…

归并排序——有序序列的合并

目录 1、简述 2、复杂度 3、稳定性 4、例子 1、简述 有序序列的合并&#xff08;Merge of Sorted Sequences&#xff09;是归并排序的核心步骤之一。其目的是将两个已经排序的序列合并成一个新的有序序列。这个过程在归并排序中非常重要&#xff0c;因为归并排序通过递归地…

技术职务管理助力智慧校园建设:深入解读人事系统

智慧校园人事系统中的技术职务管理模块&#xff0c;专注于高校及教育机构内技术人员及科研人员的职务管理&#xff0c;涵盖职称评审、技术职务任命、项目参与记录、科研成果跟踪及技术能力评估等多个方面&#xff0c;旨在通过信息化手段提升技术人才管理的效率与科学性。 在这一…

Windows如何安装并启动Nginx

0、前言 Nginx 是一款高性能、轻量级的Web服务器和反向代理服务器&#xff0c;广泛应用于互联网领域。它以其高效稳定、内存占用少和丰富的模块化设计而受到开发者们的青睐。 在实际使用过程中&#xff0c;我们多数时候会在Linux系统上运行Nginx&#xff0c;但实际上&#xff…

单目行车测距摄像系统(单目测距-行车)

单目行车测距摄像系统是一种利用单个摄像头实现车辆行驶中前方障碍物距离测量的技术。该系统通过计算机视觉算法&#xff0c;能够实时分析摄像头捕捉的图像&#xff0c;精确计算出车辆与前方物体之间的距离&#xff0c;对于自动驾驶、高级驾驶辅助系统&#xff08;ADAS&#xf…

PMP考试没通过别担心,补救办法来了

2024年6月PMP考试成绩正在陆续分批次发布。没有考试通过的同学就会疑问&#xff0c;考试没考过怎么办&#xff1f;可不可以补考&#xff1f;面对PMP考试没通过的情况&#xff0c;我们应该如何应对呢&#xff1f; 首先要告诉大家一个好消息&#xff01;6月考试不通过的考生可以…