博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java8中list转map
阅读量:6256 次
发布时间:2019-06-22

本文共 1876 字,大约阅读时间需要 6 分钟。

第一种: 取list中某2个字段作为Map的K,V

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

 

第二种:将id和实体Bean做为K,V

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

或者这样写:

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

account -> account是一个返回本身的lambda表达式,后面的使用Function接口中的一个默认方法代替,使整个方法更简洁优雅。

第三种: key存在重复记录时处理

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

如果使用第一种方法会出错,所以这里只是简单的使用后者覆盖前者来解决key重复问题。

第四种: 使用某个具体的Map类来保存,如保存时使用LinkedHashMap

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

 

第五种: List<Object>转List<String,Map<String, String>>

类似采购订单 id,对应明细记录。

public Map
> getCodeListMap(){ if(CollectionUtils.isEmpty(codeListMap)){ List
codeList = this.getCodeList(); Set
keySet = codeList.stream().map(code -> code.getCodeKbn()).collect(Collectors.toSet()); Iterator
it = keySet.iterator(); while(it.hasNext()) { String key = it.next(); codeListMap.put(key, codeList.stream().filter(code -> code.getCodeKbn().equals(key)).collect(Collectors.toList())); } } return codeListMap;}

 

转载地址:http://jwxsa.baihongyu.com/

你可能感兴趣的文章
2019.1.22 区块链论文翻译
查看>>
centos7上修改主机名
查看>>
样式技巧总结
查看>>
python 获取当前ip
查看>>
plsql developer中,清除登录历史
查看>>
mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?...
查看>>
Json、JavaBean、String等互转
查看>>
Python-列表
查看>>
多线程
查看>>
[CF949C]Data Center Maintenance
查看>>
增强for循环的使用详解及代码
查看>>
程序员优化程序流程
查看>>
6 ZigZag Conversion
查看>>
[react-router] 平时积累
查看>>
强类型数据集
查看>>
使用python处理selenium中的获取文本问题
查看>>
LinearLayout布局
查看>>
java 的 (PO,VO,TO,BO,DAO,POJO) 解释
查看>>
基本计数方法
查看>>
Mock.js:前后端分离开发工具
查看>>