我有一种方法可以将公司作为键,并将员工列表作为值
< T> Map< String,List< T>> getUserPerCompany(最终功能<用户,T>转换器).
该方法接受转换器参数,该参数在测试中返回字符串(员工的姓氏).它应该返回:Map< String,List< String>>.我创建了此实现:
return getUserStream().collect(toMap(Company :: getName,c-> converter.apply(c.getUsers())));
错误是:
无法将功能中的apply(domain.User)应用于(java.util.List< domain.User>)
我的问题是我不知道如何将员工传递到“申请”列表,而不是完整列表.
我的其他尝试:
>返回getUserStream().collect(toMap(Company :: getName,c-> converter.apply((User)c.getUsers().listIterator())));
>返回getUserStream().collect(toMap(Company :: getName,c-> converter.apply((User)c.getUsers().subList(0,c.getUsers().size())))));
>返回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());
基本上,您需要使用输入功能来映射每个用户.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。