Collectors.toMap使用记录

最近看到一行比较有趣的代码,他的功能就是将List转换为Map。我觉得挺有意思的,先前没遇到过,于是打算写篇文章记录一下。

public enum CodeEnum {USER("user"),AGE("age"),INTEREST("interest"),;private String code;public String getCode() {return code;}CodeEnum(String code) {this.code = code;}private static final Map<String, CodeEnum> map = null;public static CodeEnum of(String code) {return map.get(code);}
}

我有一个enum枚举类,其中含有3个枚举常量。我现在需要将这三个枚举常量统一转化为Map结构的数据。key是enum的code,value就是enum本身。

下方代码可以一行实现这个功能

private static final Map<String, CodeEnum> map = Arrays.stream(CodeEnum.values()).collect(Collectors.toMap(CodeEnum::getCode, Function.identity()));

我们逐步介绍一下这行代码的功能

  • CodeEnum.values() :将CodeEnum中的枚举常量以数组的形式返回,按照上方代码可以简单理解为将USER、AGE、INTEREST这三个枚举常量打包,以Array的形式返回
  • Arrays.stream() :将数组转换为stream数据流
  • .collect(Collectors.toMap(CodeEnum::getCode, Function.identity())) :.collect() 将stream中的每一个数据收集起来,并使用toMap操作每一个元素
  • Collectors.toMap(CodeEnum::getCode, Function.identity()) : toMap接受两个函数,第一个函数用于确定map的key,第二个函数确定map的value。具体来说,toMap是做如下操作。
    • 遍历stream中的每一个元素
    • 将stream的CodeEnum元素传递给CodeEnum::getCode,函数将对象的code返回,作为map的key
    • 将CodeEnum元素传递给Function.identity(),Function.identity()是个身份函数,返回值等于传入值,写法上等同于t -> t

map值输出
在这里插入图片描述

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

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

相关文章

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中&#xff0c;我们经常遇到用户疯狂点击同一按钮&#xff0c;或者服务响应慢时重复发送请求&#xff0c;导致数据重复添加或混乱。这不仅浪费资源&#xff0c;更会得到错误的业务结果。如何高效解决这一普遍问题呢&#xff1f; 常规…

影响效果图渲染的因素有哪些?渲染100邀请码1a12

效果图对很多行业是刚需&#xff0c;特别是视觉行业&#xff0c;一张好的效果图非常重要&#xff0c;影响效果图渲染的因素有很多&#xff0c;它们是哪些呢&#xff1f;一起来看看吧。 1、渲染引擎 渲染引擎对效果图的渲染至关重要&#xff0c;目前市面上有很多渲染引擎&#x…

阅读笔记(SOFT COMPUTING 2018)Seam elimination based on Curvelet for image stitching

参考文献&#xff1a; Wang Z, Yang Z. Seam elimination based on Curvelet for image stitching[J]. Soft Computing, 2018: 1-16. 注&#xff1a;SOFT COMPUTING 大类学科小类学科Top期刊综述期刊工程技术 3区 COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE 计算机&#xf…

6.1.0 MPLS LDP动态分配

手动写静态MPLS的转发路径&#xff0c;不仅不方便管理&#xff0c;同时配置量也非常多&#xff0c;每台设备都需要去做配置。为了方便管理且去除繁琐的配置&#xff0c;就需要使用到LDP动态标签分发协议了。 标签分发协议LDP&#xff08;Label Distribution Protocol&#xff…

迈向AI时代:掌握Python编程与ChatGPT的强强联手

文章目录 一、ChatGPT与Python编程的结合二、利用ChatGPT学习Python编程的优势三、如何使用ChatGPT学习Python编程四、学习技巧与建议《码上行动&#xff1a;用ChatGPT学会Python编程》特色内容简介作者简介目录获取方式 随着人工智能技术的飞速发展&#xff0c;编程已经成为了…

【漏洞复现-通达OA】通达OA report_bi存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

Unity3D Shader 素描风格渲染管线实现详解

前言 在游戏开发中&#xff0c;渲染效果是非常重要的一部分&#xff0c;它可以直接影响游戏的视觉效果和玩家的体验。而素描风格的渲染效果是一种非常独特和有趣的风格&#xff0c;可以为游戏增添一种艺术氛围。在Unity3D中&#xff0c;可以通过编写Shader来实现素描风格的渲染…

java面试

一、java基础篇 1.接口和抽象类的区别 相似点&#xff1a; &#xff08;1&#xff09;接口和抽象类都不能被实例化 &#xff08;2&#xff09;实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点&#xff1a; &#xff08;1&#xff09;抽象类可以包含普通方法…

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

👑欢迎大家订阅我的专栏一起学习YOLO👑 一、本文介绍 本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是…

STM32 学习2 库函数控制GPIO输出

STM32 学习2 库函数控制GPIO输出 一、GPIO寄存器介绍1. GPIO简介2. GPIO功能&#xff08;1&#xff09;模式分类&#xff08;2&#xff09;模式设置方法MODE[1:0]&#xff1a;模式控制&#xff0c;用于配置端口引脚的模式&#xff1a;CNF[1:0]&#xff1a;配置引脚输出速度&…

【vue+leaflet】vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一)

效果图: 一,插件安装 npm i leaflet --save // 我的版本^1.9.4 npm i leaflet.pm --save // 我的版本^2.2.0附官网链接: leaflet官网: https://leafletjs.com/index.html leaflet.pm官网: https://www.npmjs.com/package/leaflet.pm?activeTabreadme 二,模块引入 因为我…

Android MMKV 接入+ 替换原生 SP + 原生 SP 数据迁移

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java) android.os.FileUtils.sync (FileUtils.java:256) android.app.SharedPreferencesImpl.…

CentOS7.6安装RocksDB

一、简介 RocksDB是使用C编写的嵌入式kv存储引擎&#xff0c;其键值均允许使用二进制流。由Facebook基于levelDB开发&#xff0c; 提供向后兼容的levelDB API。 RocksDB针对Flash存储进行优化&#xff0c;延迟极小。RocksDB使用LSM存储引擎&#xff0c;纯C编写。Java版本Rock…

使用傅里叶实现100倍的压缩效果(附Python源码)

傅里叶变换&#xff08;Fourier Transform&#xff09;是一种将一个函数&#xff08;在时间或空间域&#xff09;转换为另一个函数&#xff08;在频率域&#xff09;的数学变换方法。它在信号处理、图像处理、通信等领域有广泛应用。 实现过程 将傅里叶系数核心的1%保留&…

使用阿里云发送短信

使用阿里云短信服务有两种方式 API 发送和 控制台发送&#xff0c;控制台发送到话有太多限制&#xff0c;这里我们使用API 通过 调用服务端代码进行发送。 整体结构如下&#xff1a; 导入依赖 <!--阿里云短信发送--><dependency><groupId>com.aliyun<…

iOS如何一键清除剪贴板中的所有内容

参考:https://www.jb51.net/shouji/746688.html 1.打开“快捷指令”应用&#xff0c;前往“快捷指令中心”&#xff0c;下拉找到“巧用剪贴板”并点击“查看全部”。 2.下拉到底部&#xff0c;点击“清除剪贴板中的所有内容”&#xff0c;然后选择“添加快捷指令”&#xff1a…

Java学习--黑马SpringBoot3课程个人总结-2024-02-12

1.环境准备 出现报错 Vue 引入路径正确的&#xff0c;但一直报错&#xff1a; Already included file name ‘‘ differs from file name ‘‘ only in casing. 解决方案来自此链接 2.注册界面的搭建 代码如下 <script setup> import { User, Lock } from element-plus/…

信钰证券:a股可以t+0吗?怎么间接实现t+0?

a股不能够t0&#xff0c;它是实施t1的买卖方式&#xff0c;即当天买入的个股&#xff0c;当天不能够卖出&#xff0c;需求比及下一个买卖日才能够卖出&#xff0c;但是&#xff0c;投资者能够通过以下方法直接地完成t0&#xff1a; 1、融券操作 通过融资融券中的融券直接地做…

多元统计分析课程论文-聚类效果评价

数据集来源&#xff1a;Unsupervised Learning on Country Data (kaggle.com) 代码参考&#xff1a;Clustering: PCA| K-Means - DBSCAN - Hierarchical | | Kaggle 基于特征合成降维和主成分分析法降维的国家数据集聚类效果评价 目录 1.特征合成降维 2.PCA降维 3.K-Mean…

Docker部署开源白板工具Excalidraw并结合内网穿透远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建…