Java中List使用stream流转成map的几种方式详解

作者:小小小米fly 时间:2022-07-31 21:46:12 

实体例子

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));

控制台打印日志:

{&ldquo;光头强&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;},&ldquo;熊大&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;},&ldquo;熊二&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;}}

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));

控制台打印日志:

{&ldquo;光头强&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;熊大&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;熊二&rdquo;:&ldquo;森林第二个小屋&rdquo;}

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));

控制台打印日志:

{&ldquo;光头强&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;}],&ldquo;熊大&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;},{&ldquo;address&rdquo;:&ldquo;森林第四个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;}],&ldquo;熊二&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;}]}

方法二:

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));

控制台打印日志:

{&ldquo;光头强&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;}],&ldquo;熊大&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;},{&ldquo;address&rdquo;:&ldquo;森林第四个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;}],&ldquo;熊二&rdquo;:[{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;}]}

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));

控制台打印日志:

{&ldquo;光头强&rdquo;:[&ldquo;森林第三个小屋&rdquo;],&ldquo;熊大&rdquo;:[&ldquo;森林第一个小屋&rdquo;,&ldquo;森林第四个小屋&rdquo;],&ldquo;熊二&rdquo;:[&ldquo;森林第二个小屋&rdquo;]}

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));

控制台打印日志:

{&ldquo;1&rdquo;:{&ldquo;person&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;},&ldquo;id&rdquo;:&ldquo;1&rdquo;},&ldquo;2&rdquo;:{&ldquo;person&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;},&ldquo;id&rdquo;:&ldquo;2&rdquo;},&ldquo;3&rdquo;:{&ldquo;person&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;},&ldquo;id&rdquo;:&ldquo;3&rdquo;}}

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));

控制台打印日志:

{&ldquo;1&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;},&ldquo;2&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;},&ldquo;3&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;}}

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));

控制台打印日志:

{&ldquo;1&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第一个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊大&rdquo;,&ldquo;id&rdquo;:&ldquo;1&rdquo;},&ldquo;2&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第二个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;熊二&rdquo;,&ldquo;id&rdquo;:&ldquo;2&rdquo;},&ldquo;3&rdquo;:{&ldquo;address&rdquo;:&ldquo;森林第三个小屋&rdquo;,&ldquo;name&rdquo;:&ldquo;光头强&rdquo;,&ldquo;id&rdquo;:&ldquo;3&rdquo;}}

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));

控制台打印日志:

{&ldquo;1&rdquo;:&ldquo;熊大&rdquo;,&ldquo;2&rdquo;:&ldquo;熊二&rdquo;,&ldquo;3&rdquo;:&ldquo;光头强&rdquo;}

来源:https://blog.csdn.net/mianxiao15908/article/details/128673800

标签:stream,list,map
0
投稿

猜你喜欢

  • 详解Spring Bean的集合注入和自动装配

    2023-02-18 15:02:58
  • Java基础教程之接口的继承与抽象类

    2023-11-06 20:47:22
  • Java集合TreeSet用法详解

    2023-11-10 22:53:34
  • 使用java springboot设计实现的图书管理系统(建议收藏)

    2023-11-25 00:54:49
  • Spring JDBCTemplate原理及使用实例

    2023-03-11 09:47:19
  • Java自定义线程池的实现示例

    2022-01-23 01:28:04
  • java基础-数组扩容详解

    2022-05-24 00:34:58
  • 面试官:详细谈谈Java对象的4种引用方式

    2022-09-19 04:52:20
  • Jenkins+Maven+SVN自动化部署java项目

    2021-06-01 11:28:27
  • Java使用JDBC连接postgresql数据库示例

    2022-11-06 22:49:02
  • Java LinkedHashMap深入分析源码

    2022-07-31 03:05:43
  • Java编程基础测试题分享

    2023-11-27 22:14:58
  • 关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)

    2023-09-04 01:30:03
  • SpringBoot核心@SpringBootApplication使用介绍

    2023-11-25 08:33:59
  • Java实现动态获取图片验证码的示例代码

    2023-07-24 22:32:05
  • Java深入了解数据结构之栈与队列的详解

    2022-03-24 08:12:27
  • Java实现批量导入excel表格数据到数据库中的方法

    2021-06-22 07:39:49
  • 浅谈Maven的安装及修改为阿里云下载依赖

    2023-08-05 08:30:37
  • C++程序中启动线程的方法

    2023-06-28 03:35:02
  • Java深入讲解异常处理try catch的使用

    2023-11-04 13:00:32
  • asp之家 软件编程 m.aspxhome.com