Stream流将list装换为map

群狼之龙 / 2023-08-24 / 原文

首先定义的userList内容如下:

[User(id=1, name=第一人, telephone=第一手机号, address=第一住址),

User(id=2, name=第二人, telephone=第二手机号, address=第二住址),

User(id=1, name=第三人, telephone=第三手机号, address=第三住址),

User(id=1, name=第四人, telephone=第四手机号, address=第四住址)]

 

根据id转换为map(去重)
Map<Integer, User> map = userList.stream().collect(Collectors.toMap(User::getId, User -> User,(key1,key2)->key1));

之后结果为
{1=User(id=1, name=第一人, telephone=第一手机号, address=第一住址),
2=User(id=2, name=第二人, telephone=第二手机号, address=第二住址)}

根据id转换为map(不去重)
Map<Integer, List<User>> collect1 = userList.stream().collect(Collectors.groupingBy(User::getId));

之后的结果为
{1=[User(id=1, name=第一人, telephone=第一手机号, address=第一住址), User(id=1, name=第三人, telephone=第三手机号, address=第三住址), User(id=1, name=第四人, telephone=第四手机号, address=第四住址)],
2=[User(id=2, name=第二人, telephone=第二手机号, address=第二住址)]}