栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在Java 8中将List转换为Map对象方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java 8中将List转换为Map对象方法

假设有一个员工对象:

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对象方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/139655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号