如何将对象列表转换为<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())文章是错误的——你试图返回一个方法句柄列表,而不是一个映射函数(除了它在语法上不正确的事实——括号不属于那里)。


以上是如何将对象列表转换为&lt;String,List&lt;String&gt;&gt;的映射?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>