假设有一个员工对象:

public class Employee {

// member variables

private int empId;

private String empName;

private int empAge;

private String empDesignation;

将这个员工对象放入LIst集合,如何转为Map? 首先要明确Map的key是什么?

1. 比如式样员工对象的empId作为key,值是员工姓名:

// convert List to Map using Java 8 Streams

Map mapOfEmployees = employees.stream().collect(

Collectors.toMap(e -> e.getEmpId(),e -> e.getEmpName()));

2.Map的Key是empId,整个对象为Map的值:

// convert List to Map using Java 8 Streams

Map mapOfEmployees = employees.stream().collect(

Collectors.toMap( e -> e.getEmpId(), e -> e));

3. 如果List中有重复的empId,映射到Map时,Key时不能重复的,如何解决?

默认情况时会抛重复异常,为了克服IllegalStateException重复键异常,我们可以简单地添加一个

BinaryOperator方法到toMap()中,这也称为合并功能,比如如果重复,可以取第一个元素:

Map mapOfEmployees = employees.stream().collect(

Collectors.toMap(

e -> e.getEmpId(),

e -> e.getEmpName(),

(e1, e2) -> e1 )); // Merge Function

4. 将List转换为Map - 使用TreeMap对键进行自然排序,或者指定的Map实现呢?

Map mapOfEmployees = employees.stream().collect(

Collectors.toMap(

e -> e.getEmpId(),

e -> e.getEmpName(),

(e1, e2) -> e1 , // Merge Function

TreeMap::new)); // Map Supplier

如果你的TreeMap实现需要加入比较器,将上面代码中TreeMap::new替换成:

() -> new TreeMap(new MyComparator())

总结

以上所述是小编给大家介绍的在Java 8中将List转换为Map对象方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

java list转成map对象_在Java 8中将List转换为Map对象方法相关推荐

  1. java文件打包成jar文件_将java文件打包成jar包步骤

    将mypackage包中的FrameDemo.java文件打包成可执行成jar包 步骤1:先将程序中所有类打包成一个包 编译mypackage包FrameDemo.java文件,将类文件存入D盘Jar ...

  2. java程序编译成exe文件_将java程序编译成独立运行的exe文件

    将java程序编译成独立运行的exe文件 众所周知java的程序可以"一次编译,到处运行",这个特性不错,但是实现这个特性的前提是当前的平台 必须有相应的jvm,而且如果当前平台的 ...

  3. java 文字转换成语音 代码_【Java】将文本转化成语音

    [Java]将文本转化成语音 发布时间:2018-05-07 21:45, 浏览次数:540 , 标签: Java 1.需要的jar包: 2.把dll文件放在%JAVA_HOME%\bin下(注意系统 ...

  4. java字符串转换成字节数组_将Java字符串转换为字节数组

    我有一个要加密的字节数组,然后转换为字符串,以便可以传输. 当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密. 我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使 ...

  5. java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...

    专注于Java领域优质技术号,欢迎关注 原创: 阿杜的世界 阅读本文大概需要 4分钟. 所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象.这意味着当我们将一个不可变对象的引用赋值给某 ...

  6. java robot 对象_用Java Robot对象实现服务器屏幕远程监视

    用Java Robot对象实现服务器屏幕远程监视 作者:李鲁群 摘要: 有时候,在Java应用程序开发中,如:远程监控或远程教学,常常需要对计算机的屏幕进行截取,由于屏幕截取是比较接近操作系统的操作, ...

  7. java jvm对象_【Java】JVM

    在 HotSpot 虚拟机中,一个对象在内存中存储的布局可以分为三块区域:对象头(Object Header).实例数据(Instance Data)和对齐填充(Padding). 当我们在 Java ...

  8. java 异常对象_在java中的异常处理中的异常对象是什么

    展开全部 Exception类以及他的子类 的一个实例对象 比如32313133353236313431303231363533e58685e5aeb931333264633563 常见异常 1. j ...

  9. java有几大对象_一个 Java 对象到底有多大?

    阅读本文大概需要 2.8 分钟. 出处:http://u6.gg/swLPg 编写 Java 代码的时候,大多数情况下,我们很少关注一个 Java 对象究竟有多大(占据多少内存),更多的是关注业务与逻 ...

  10. formdata 接受参数中带有class 对象_浅析JAVA中的反射机制及对Servlet的优化

    今天来聊聊java中的反射机制,工作以后发现很多东西动不动就要使用反射或者动态代理,如果不能很好的理解反射,那么对于动态代理等一些重要的设计模式就会有种不够通透的感觉. 所谓的反射,就是在运行状态中, ...

最新文章

  1. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
  2. pyqt5教程9:Widgets组件
  3. linux教程期末考试,Linux-期末考试试题8套含答案.doc
  4. java的守护进程与非守护进程
  5. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
  6. 辨异 —— 数学基本概念
  7. 阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下...
  8. 背包问题-递归思想(C语言)
  9. 2019软科【世界一流计算机学科排名】公布!
  10. 如何在 Bios 中更改硬盘模式?
  11. Shiro记住我(RememberMe)
  12. xgboost, lightgbm, catboost, 谁才是预言之战的最终赢家?
  13. PHP socket 连接 Socket server
  14. visitor模式本质
  15. 再谈FEC与UDP可靠传输,音视频FEC 应用
  16. ubuntu安装与卸载搜狗输入法
  17. phone4s怎么越狱?iphone4s越狱教程图文解...
  18. SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)
  19. 2020年有寓意的领证日期_2020领证吉日,这些特殊寓意的好日子不能错过
  20. 【Mac】加快Magic Mouse的移动速度

热门文章

  1. 在centos安装oracle客户端,centos下安装oracle客户端
  2. 【软技能】完全写作指南--演讲幻灯片
  3. 2021年计算机二级web题库,2021年全国计算机等级考试(二级Web程序设计)经典试题及答案...
  4. android 手势密码存储,Android 简易手势密码开源库详解
  5. 分享收集软件教程的微信小程序
  6. H3C无线控制器与Windows2008NPS结合实现无线终端的802.1X认证
  7. 使用Javassist 动态生成类
  8. 统一建模语言(UML)介绍和使用
  9. 自我保护第一课加密与防破解
  10. Java实现国密算法SM2,SM3,SM4,并且实现ECB和CBC模式