java - 如何申请功能来自列表的参数(不是列表)
问题描述
我有一个方法,它返回 company 作为 key 和 listemployerr 作为 values
<T> Map<String, List<T>> getUserPerCompany(final Function<User, T> converter)
。该方法接受converter
在测试中返回字符串(员工的姓名+姓氏)的参数。它应该返回:Map<String, List<String>>
. 我创建了这个实现:
return getUserStream().collect(toMap(Company::getName, c -> converter.apply(c.getUsers())));
错误是:
apply (domain.User) in Function cannot be applied to (java.util.List<domain.User>)
我的问题是我不知道如何将员工传递给“申请”列表,而不是完整的列表。
我的其他尝试:
return getUserStream().collect(toMap(Company::getName, c -> converter.apply((User) c.getUsers().listIterator())));
return getUserStream().collect(toMap(Company::getName, c -> converter.apply((User) c.getUsers().subList(0, c.getUsers().size()))));
return getUserStream().collect(toMap(Company::getName, c -> converter.apply((User) c.getUsers().iterator())));
解决方案
我想这就是你要找的
<T> Map<String, List<T>> getUserPerCompany(final Function<User, T> converter) {
return getUserStream().collect(Collectors.toMap(
c -> c.getName(),
c -> c.getUsers()
.stream()
.map(converter)
.collect(Collectors.toList())
));
}
用法示例是
final Map<String, List<String>> users = getUserPerCompany(user -> user.getName() + " " + user.getSurname());
基本上你需要map
每个User
,应用输入Function
。
推荐阅读
- lilypond - 这个 Lilypond 警告是什么:“找不到可行的初始配置:可能找不到好的光束斜率”?
- matlab - 查找给定总和的 -1 和 1 的所有组合
- c# - WPF:MVVM上的窗口之间的通信
- r - 为什么 foreach 和 ginv 在 R 中不能一起工作
- mysql - 将值插入到具有日期数据类型的表中
- php - SMS 消息的字符编码问题
- r - "could not find function ggplot" - R
- python - Making a game but stuck on calling functions
- django - Django __str__ gives object has no attribute error with a foreign key
- vim - oh-my-zsh agnoster RPROMPT