List使用stream流转成map的几种方式

实体例子List 转成MapList 转成MapList 转成Map>方法一:方法二:

List 转成Map>List> 转成Map>List> 转成MapList> 转成Map>List> 转成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

List 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 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

List 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 map = list.stream().collect(Collectors.toMap(Person::getName,Person::getAddress,(value1, value2) -> value1));

System.out.println(JSON.toJSONString(map));

控制台打印日志: {“光头强”:“森林第三个小屋”,“熊大”:“森林第一个小屋”,“熊二”:“森林第二个小屋”}

List 转成Map

方法一:

List 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> map = list.stream().collect(Collectors.groupingBy(Person::getName));

System.out.println(JSON.toJSONString(map));

控制台打印日志: {“光头强”:[{“address”:“森林第三个小屋”,“name”:“光头强”}],“熊大”:[{“address”:“森林第一个小屋”,“name”:“熊大”},{“address”:“森林第四个小屋”,“name”:“熊大”}],“熊二”:[{“address”:“森林第二个小屋”,“name”:“熊二”}]}

方法二:

List 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> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each),(value1, value2) -> {

List 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

List 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> map = list.stream().collect(Collectors.toMap(Person::getName,each->Collections.singletonList(each.getAddress()),(value1, value2) -> {

List union = new ArrayList<>(value1);

union.addAll(value2);

return union;

}));

System.out.println(JSON.toJSONString(map));

控制台打印日志: {“光头强”:[“森林第三个小屋”],“熊大”:[“森林第一个小屋”,“森林第四个小屋”],“熊二”:[“森林第二个小屋”]}

List> 转成Map>

List> list = new ArrayList<>();

Person person1 = new Person("熊大","森林第一个小屋");

Person person2 = new Person("熊二","森林第二个小屋");

Person person3 = new Person("光头强","森林第三个小屋");

Map map1 = new HashMap<>();

map1.put("id","1");

map1.put("person",person1);

Map map2 = new HashMap<>();

map2.put("id","2");

map2.put("person",person2);

Map map3 = new HashMap<>();

map3.put("id","3");

map3.put("person",person3);

list.add(map1);

list.add(map2);

list.add(map3);

Map> 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

List> list = new ArrayList<>();

Person person1 = new Person("熊大","森林第一个小屋");

Person person2 = new Person("熊二","森林第二个小屋");

Person person3 = new Person("光头强","森林第三个小屋");

Map map1 = new HashMap<>();

map1.put("id","1");

map1.put("person",person1);

Map map2 = new HashMap<>();

map2.put("id","2");

map2.put("person",person2);

Map map3 = new HashMap<>();

map3.put("id","3");

map3.put("person",person3);

list.add(map1);

list.add(map2);

list.add(map3);

Map 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>

List> list = new ArrayList<>();

Map map1 = new HashMap<>();

map1.put("id","1");

map1.put("name","熊大");

map1.put("address","森林第一个小屋");

Map map2 = new HashMap<>();

map2.put("id","2");

map2.put("name","熊二");

map2.put("address","森林第二个小屋");

Map map3 = new HashMap<>();

map3.put("id","3");

map3.put("name","光头强");

map3.put("address","森林第三个小屋");

list.add(map1);

list.add(map2);

list.add(map3);

Map> 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

List> list = new ArrayList<>();

Map map1 = new HashMap<>();

map1.put("id","1");

map1.put("name","熊大");

map1.put("address","森林第一个小屋");

Map map2 = new HashMap<>();

map2.put("id","2");

map2.put("name","熊二");

map2.put("address","森林第二个小屋");

Map map3 = new HashMap<>();

map3.put("id","3");

map3.put("name","光头强");

map3.put("address","森林第三个小屋");

list.add(map1);

list.add(map2);

list.add(map3);

Map 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”:“光头强”}

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: 

发表评论

  • 18人参与,1条评论
  • 归海光华归海光华
    2024-06-13 00:55:11回复
  • 在处理List转成Map的问题时,如果遇到内容为空或者转换出错的情况,可以首先检查List是否为空或者每个元素是否包含必要的键值对,如果确定List有效且每个元素都包含必要的键值对,那么可以尝试使用不同的转换方法,比如使用`Collectors.toMap()`的重载方法,通过比较器来指定当键冲突时的处理方式,也需要考虑到可能的类型转换问题,确保转换过程中类型能够正确匹配。
返回顶部暗黑模式