在Java 8中将List转换为Map对象方法
假设有一个员工对象:
publicclassEmployee{ //membervariables privateintempId; privateStringempName; privateintempAge; privateStringempDesignation;
将这个员工对象放入LIst集合,如何转为Map?首先要明确Map的key是什么?
1.比如式样员工对象的empId作为key,值是员工姓名:
//convertListtoMap MapusingJava8Streams mapOfEmployees=employees.stream().collect( Collectors.toMap(e->e.getEmpId(),e->e.getEmpName()));
2.Map的Key是empId,整个对象为Map的值:
//convertListtoMap MapusingJava8Streams mapOfEmployees=employees.stream().collect( Collectors.toMap(e->e.getEmpId(),e->e));
3.如果List中有重复的empId,映射到Map时,Key时不能重复的,如何解决?
默认情况时会抛重复异常,为了克服IllegalStateException重复键异常,我们可以简单地添加一个
BinaryOperator方法到toMap()中,这也称为合并功能,比如如果重复,可以取第一个元素:
MapmapOfEmployees=employees.stream().collect( Collectors.toMap( e->e.getEmpId(), e->e.getEmpName(), (e1,e2)->e1));//MergeFunction
4.将List转换为Map-使用TreeMap对键进行自然排序,或者指定的Map实现呢?
MapmapOfEmployees=employees.stream().collect( Collectors.toMap( e->e.getEmpId(), e->e.getEmpName(), (e1,e2)->e1,//MergeFunction TreeMap ::new)); //MapSupplier
如果你的TreeMap实现需要加入比较器,将上面代码中TreeMap
()->newTreeMap(newMyComparator())
总结
以上所述是小编给大家介绍的在Java8中将List转换为Map对象方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。