使用java8的stream(流)将List集合转成Map集合的方法
2020-07-03 15:48
627 查看
常用方式
代码如下:
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)); }
以上就是使用java8的stream(流)将List集合转成Map集合的方法,欢迎参考!
相关文章推荐
- Java8使用stream将Map转成List的方法
- Java集合Collection、List、Set、Map使用详解
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- Java集合List、Set、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- Java中集合List,Map,Set的使用
- java的List--ArrayList集合使用方法
- java8 api方法list.stream().map().collect(Collectors.toList())
- 使用Java Stream API将List按自定义分组规则转换成Map的一个例子
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- Java集合的使用:List与Map
- Java集合Set、List、Map的遍历方法
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- JAVA经常使用集合框架使用方法具体解释基础篇二之Colletion子接口List
- java中有关List集合,Set集合,Map集合的遍历方法汇总
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
- [Java] 集合类(List、Set、Map的基本使用)
- java中集合的使用-set,list,map