Java中List使用stream流转成map的几种方式详解
实体例子
public class Person { private String name; private String address; public Person(String name, String address) { this.name = name; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
List 转成Map<String,Object>
List<Person> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Person person4 = new Person("熊大","森林第四个小屋"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Map<String,Person> map = list.stream().collect(Collectors.toMap(Person::getName,each->each,(value1, value2) -> value1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“光头强”:{“address”:“森林第三个小屋”,“name”:“光头强”},“熊大”:{“address”:“森林第一个小屋”,“name”:“熊大”},“熊二”:{“address”:“森林第二个小屋”,“name”:“熊二”}}
List 转成Map<String,String>
List<Person> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Person person4 = new Person("熊大","森林第四个小屋"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Map<String,String> map = list.stream().collect(Collectors.toMap(Person::getName,Person::getAddress,(value1, value2) -> value1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“光头强”:“森林第三个小屋”,“熊大”:“森林第一个小屋”,“熊二”:“森林第二个小屋”}
List 转成Map<String,List>
方法一:
List<Person> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Person person4 = new Person("熊大","森林第四个小屋"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Map<String, List<Person>> map = list.stream().collect(Collectors.groupingBy(Person::getName)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“光头强”:[{“address”:“森林第三个小屋”,“name”:“光头强”}],“熊大”:[{“address”:“森林第一个小屋”,“name”:“熊大”},{“address”:“森林第四个小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二个小屋”,“name”:“熊二”}]}
方法二:
List<Person> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Person person4 = new Person("熊大","森林第四个小屋"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Map<String,List<Person>> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each),(value1, value2) -> { List<Person> union = new ArrayList<>(value1); union.addAll(value2); return union; })); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“光头强”:[{“address”:“森林第三个小屋”,“name”:“光头强”}],“熊大”:[{“address”:“森林第一个小屋”,“name”:“熊大”},{“address”:“森林第四个小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二个小屋”,“name”:“熊二”}]}
List 转成Map<String,List>
List<Person> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Person person4 = new Person("熊大","森林第四个小屋"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Map<String,List<String>> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each.getAddress()),(value1, value2) -> { List<String> union = new ArrayList<>(value1); union.addAll(value2); return union; })); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“光头强”:[“森林第三个小屋”],“熊大”:[“森林第一个小屋”,“森林第四个小屋”],“熊二”:[“森林第二个小屋”]}
List<Map<String,Object>> 转成Map<String,Map<String,Object>>
List<Map<String,Object>> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Map<String,Object> map1 = new HashMap<>(); map1.put("id","1"); map1.put("person",person1); Map<String,Object> map2 = new HashMap<>(); map2.put("id","2"); map2.put("person",person2); Map<String,Object> map3 = new HashMap<>(); map3.put("id","3"); map3.put("person",person3); list.add(map1); list.add(map2); list.add(map3); Map<String,Map<String,Object>> map = list.stream().collect(Collectors.toMap(each->Objects.toString(each.get("id"),""),each->each,(key1,key2)->key1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“1”:{“person”:{“address”:“森林第一个小屋”,“name”:“熊大”},“id”:“1”},“2”:{“person”:{“address”:“森林第二个小屋”,“name”:“熊二”},“id”:“2”},“3”:{“person”:{“address”:“森林第三个小屋”,“name”:“光头强”},“id”:“3”}}
List<Map<String,Object>> 转成Map<String,Object>
List<Map<String,Object>> list = new ArrayList<>(); Person person1 = new Person("熊大","森林第一个小屋"); Person person2 = new Person("熊二","森林第二个小屋"); Person person3 = new Person("光头强","森林第三个小屋"); Map<String,Object> map1 = new HashMap<>(); map1.put("id","1"); map1.put("person",person1); Map<String,Object> map2 = new HashMap<>(); map2.put("id","2"); map2.put("person",person2); Map<String,Object> map3 = new HashMap<>(); map3.put("id","3"); map3.put("person",person3); list.add(map1); list.add(map2); list.add(map3); Map<String,Object> map = list.stream().collect(Collectors.toMap(each->Objects.toString(each.get("id"),""),each->each.get("person"),(key1,key2)->key1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“1”:{“address”:“森林第一个小屋”,“name”:“熊大”},“2”:{“address”:“森林第二个小屋”,“name”:“熊二”},“3”:{“address”:“森林第三个小屋”,“name”:“光头强”}}
List<Map<String,String>> 转成Map<String,Map<String,String>>
List<Map<String,String>> list = new ArrayList<>(); Map<String,String> map1 = new HashMap<>(); map1.put("id","1"); map1.put("name","熊大"); map1.put("address","森林第一个小屋"); Map<String,String> map2 = new HashMap<>(); map2.put("id","2"); map2.put("name","熊二"); map2.put("address","森林第二个小屋"); Map<String,String> map3 = new HashMap<>(); map3.put("id","3"); map3.put("name","光头强"); map3.put("address","森林第三个小屋"); list.add(map1); list.add(map2); list.add(map3); Map<String,Map<String,String>> map = list.stream().collect(Collectors.toMap(each->each.get("id"),each->each,(key1,key2)->key1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“1”:{“address”:“森林第一个小屋”,“name”:“熊大”,“id”:“1”},“2”:{“address”:“森林第二个小屋”,“name”:“熊二”,“id”:“2”},“3”:{“address”:“森林第三个小屋”,“name”:“光头强”,“id”:“3”}}
List<Map<String,String>> 转成Map<String,String>
List<Map<String,String>> list = new ArrayList<>(); Map<String,String> map1 = new HashMap<>(); map1.put("id","1"); map1.put("name","熊大"); map1.put("address","森林第一个小屋"); Map<String,String> map2 = new HashMap<>(); map2.put("id","2"); map2.put("name","熊二"); map2.put("address","森林第二个小屋"); Map<String,String> map3 = new HashMap<>(); map3.put("id","3"); map3.put("name","光头强"); map3.put("address","森林第三个小屋"); list.add(map1); list.add(map2); list.add(map3); Map<String,String> map = list.stream().collect(Collectors.toMap(each->each.get("id"),each->each.get("name"),(key1,key2)->key1)); System.out.println(JSON.toJSONString(map));
控制台打印日志:
{“1”:“熊大”,“2”:“熊二”,“3”:“光头强”}
总结
到此这篇关于Java中List使用stream流转成map的几种方式的文章就介绍到这了,更多相关Java List用stream流转map内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
聊聊@Autowired注解注入,写接口名字还是实现类的名字
这篇文章主要介绍了聊聊@Autowired注解注入,写接口名字还是实现类的名字,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11Springboot+MybatisPlus+Oracle实现主键自增的示例代码
这篇文章主要介绍了Springboot+MybatisPlus+Oracle实现主键自增的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法
这篇文章主要介绍了解决mybatis-plus使用jdk8的LocalDateTime 查询时报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08SSH框架网上商城项目第28战之使用Ajax技术局部更新商品数量和总价
这篇文章主要为大家详细介绍了SSH框架网上商城项目第28战之使用Ajax技术局部更新商品数量和总价,感兴趣的小伙伴们可以参考一下2016-06-06
最新评论