加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java-如何在列表(而不是列表)中的函数参数中应用

发布时间:2020-12-14 19:26:27 所属栏目:Java 来源:网络整理
导读:我有一种方法可以将公司作为键,并将员工列表作为值 Map > getUserPerCompany(最终功能 转换器). 该方法接受转换器参数,该参数在测试中返回字符串(员工的姓氏).它应该返回:Map >.我创建了此实现: return getUserStream().collect(toMap(Company :: getName,

我有一种方法可以将公司作为键,并将员工列表作为值
< 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());

基本上,您需要使用输入功能来映射每个用户.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读