>?,java,java-stream"/>

首页 > 解决方案 > 如何将对象列表转换为>?

问题描述

我有一个用户列表

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())或类似的结构替换**..... **,但我似乎无法让它工作。

标签: javajava-stream

解决方案


只需使用 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())作品是错误的——你试图返回一个方法句柄列表,而不是一个映射函数(除了它在语法上不正确——括号不属于那里)。


推荐阅读