list转为map

list转为maplist转为map

大家好,又见面了,我是你们的朋友全栈君。

常用方式

代码如下:

public Map<Long, String> getIdNameMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
}

收集成实体本身map

代码如下:

public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
}

account -> account是一个返回本身的lambda表达式,其实还可以使用Function接口中的一个默认方法代替,使整个方法更简洁优雅:

public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Function.identity()));
}

重复key的情况

代码如下:

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity()));
}

这个方法可能报错(java.lang.IllegalStateException: Duplicate key),因为name是有可能重复的。toMap有个重载方法,可以传入一个合并的函数来解决key冲突问题:

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2));
}

这里只是简单的使用后者覆盖前者来解决key重复问题。

指定具体收集的map

toMap还有另一个重载方法,可以指定一个Map的具体实现,来收集数据:

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2, LinkedHashMap::new));
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106424.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android开机动画总结

    Android开机动画总结开机动画制作开机动画两个要点启动开机动画开机动画运行过程代码位置运行简介开机动画遇到的问题制作开机动画两个要点压缩时选择“存储”模式资源文件命名序号,需要和最大序号位数相同,位数不够,前面补零。如00、01、02、。。。、10、11。系统开机动画支持功能配置debug.sf.nobootanimation为0若要关闭开机动画功能,在device目录下的mk文件中配置,确保系统开…

    2022年5月15日
    46
  • springboot整合mybatis配置_springboot 跨域

    springboot整合mybatis配置_springboot 跨域springboot整合dubbo+zookeeper项目结构:注意:在做此demo之前应该先自行搭建好zookeeper环境也可以搭建dubbo监控环境1.随便创建一个项目,之后添加一个maven项目用于存放接口packagecom.wzb.service;/***@authorSatsuki*@time2019/8/2717:51*@descripti…

    2022年4月19日
    51
  • 卡巴斯基2月病毒及恶意软件排行榜

    卡巴斯基2月病毒及恶意软件排行榜互联网“热门”木马病毒排名下面显示了在2009年2月期间,中国地区的互联网上木马病毒的活跃情况。表中所列的都是最常遇到的恶意程序。这些恶意程序会在用户上网的同时给用户带来危害。(下表中的数据根据卡巴斯基产品检测情况统计得出)Nameofmalware % pp1. not-a-virus:AdWare.Win32.BHO.fay     7.69 +102. HEUR:Trojan…

    2022年7月25日
    13
  • 自监督学习(self-supervised learning)(20201124)

    自监督学习(self-supervised learning)(20201124)看论文总是会看出来一堆堆奇奇怪怪的名词。从远程监督、有监督、半监督、无监督开始,最近又看到了一个自监督。首先先对上面的概念进行简述:半监督(semi-supervisedlearning):利用好大量无标注数据和少量有标注数据进行监督学习;远程监督(distant-supervisedlearning):利用知识库对未标注数据进行标注;无监督:不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。自监督:利用辅助任务从无监督的数据中挖掘大量自身的信息。

    2022年9月14日
    3
  • 常见的SQL笔试题和面试题(上):经典50题

    常见的SQL笔试题和面试题(上):经典50题https://zhuanlan.zhihu.com/p/38354000常见的SQL笔试题和面试题(上):经典50题已知有如下4张表:学生表:STUDENT(S#,SNAME,SAGE,SSEX)课程表:COURSE(C#,CNAME,T#)成绩表:SC(S#,C#,SCORE)教师表:TEACHER(T#,TNAME)其中,1)学生表里的字段含义:S#代表学号,SNAME代表学生姓名,SAGE…

    2022年6月28日
    26
  • html 滚动条 scrolltop scrollheight,浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight…

    html 滚动条 scrolltop scrollheight,浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight…浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight发布时间:2020-07-1709:27:20来源:亿速云阅读:223作者:小猪小编这次要给大家分享的是浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这…

    2022年7月23日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号