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; 常规…

vscode 命令无法执行

以管理员启动powershell 输入set-ExecutionPolicy RemoteSigned yarn : 无法加载文件 D:\node\node_global\yarn.ps1。未对文件 D:\node\node_global\yarn.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息&#xff0c;请参阅 https:/go…

2024年华为OD机试真题-计算三叉搜索树的高度-Java-OD统一考试(C卷)

题目描述: 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。 查找的规则是: 1. 如果数小于节点的数减去500,则将数插入节点的左子树 2. 如果数大于节点的数加上500,则将…

影响效果图渲染的因素有哪些?渲染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…

供应STM32F103C8T6原装芯片

长期供应各品牌芯片&#xff1a; STM32F103C8T6 AMS1117-3V3 STM32F407VGT6 BSC039N06NS ICE2QR2280G-1 IPA65R310CFD IPP60R120P7 BSC010N04LS BSC011N03LS BSC027N04LS BSC042NE7NS3 BSC050N10NS5 BSC0911ND BSC109N10NS3 BSC320N20NS3 BSZ014NE2…

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

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

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

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

代码随想录算法训练营day24 | 77. 组合

今天开始回溯 回溯的模板。for循环是横向遍历&#xff0c;backtracking为纵向遍历。 回溯法解决的问题都可以抽象为树形结构&#xff0c;树的宽度为集合的大小&#xff0c;树的深度为递归的深度 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#x…

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

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

java面试

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

供应STM32F407VGT6芯片

长期供应各品牌芯片&#xff1a; STM32F407VGT6 ADM809LAKSZ-REEL7 MC78M05BDTRKG TOP271EG FDD16AN08A0 LM317MDT-TR ES1C DS90UB947TRGCRQ1 KIA75S393F-RTK MC96F8316SM FNB80560T3 S29AL008J55BFIR22 SS8050D-BU STM32F405RGT6TR IRFS3607TRLPBF MC79M05CDTR…

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

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

网络安全之信息收集<五>

目录 一.信息收集简介1.什么是信息收集2.信息收集的意义3.信息收集的分类(1)主动信息收集(2)被动信息收集 4.收集的具体信息(1)服务器信息(2)网站信息(3)域名信息(4)管理员信息 二.域名信息收集1.域名介绍2.域名分类3.Whois(1)Whois查询(2)Whois反查 4.子域名收集 一.信息收集简…

C++ 基本算法 快速排序 第k个数

给定一个长度为 n 的整数数列&#xff0c;以及一个整数 k &#xff0c;请用快速选择算法求出数列从小到大排序后的第 k 个数。 输入格式 第一行包含两个整数 n 和 k 。 第二行包含 n 个整数&#xff08;所有整数均在 1∼109 范围内&#xff09;&#xff0c;表示整数数列。 输…

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…