java - 如何将对象列表转换为>?
问题描述
我有一个用户列表
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())
作品是错误的——你试图返回一个方法句柄列表,而不是一个映射函数(除了它在语法上不正确——括号不属于那里)。