首页 > 解决方案 > 从内部嵌套循环返回收集的结果

问题描述

我正在尝试使用 Java8 流来迭代 2 个列表并在内循环中累积结果并最终返回Multimap<String,String>

这是一个片段:

private Multimap<String, String> processUsers(List<Organization> organizations, List<User> users) {
    return organizations.stream() //
        .map(organization-> users.stream()
            .filter(user -> organization.exist(user))
            .collect(MultimapCollector.toMultimap(User::role, User::id))
        );
}

这不会建立,因为它返回Stream<Object>. 如何修复此方法以从该方法收集并返回 MultiMap。

标签: javajava-8java-stream

解决方案


首先流过用户,而不是组织:

return users.stream()
    .filter(user -> organizations.stream().anyMatch(org -> org.exist(user)))
    .collect(MultimapCollector.toMultimap(User::role, User::id));

推荐阅读