如何将对象列表转换为<String,List<String>>的映射?
我有一个用户列表
Collection<User> userList = groupManager.getUserList(groupName);
不太了解 Java-Streams API,我想将它们映射到一个映射中,如下所示:键是用户键,值是用户对象的其他属性的列表。
Map<String, List<String>> userDsiplayData = userList.stream()
.collect(Collectors.toMap(User::getKey, **.......**))
我试图用Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())或类似的结构替换 **..... **但我似乎无法让它工作。
回答
只需使用 lambda:
Map<String, List<String>> userDsiplayData = userList.stream()
.collect(Collectors.toMap(User::getKey,
user -> List.of(user.getUsername(), user.getDisplayName(), user.getEmail()))
顺便说一下,你的Arrays.asList(User::getUsername(), User::getDisplayName(), User::getEmail())文章是错误的——你试图返回一个方法句柄列表,而不是一个映射函数(除了它在语法上不正确的事实——括号不属于那里)。
THE END
二维码