Java 8遍历列表并存储到Map中

3
List<String> list =new ArrayList<>();
list.add("abcd");
list.add("afsd");
list.add("addd");

Map<String, List<Person>> ordersByInstrumentId = findService.findAllUsers(**list.get(0)**)
                        .stream()
                        .collect(Collectors.groupingBy(Dummy::getId, Collectors.toList()))

我的findAllUsers方法需要一个字符串作为参数。我想用迭代器代替list.get(0),这样它将为每个元素调用函数并将其存储在Map中。我尝试使用list.foreach,但它返回void,所以没有用。


2
findService.findAllUsers 返回什么? - Eran
list.stream().map(e -> findService.findAllUsers(e)).flatMap(Collection::stream) 会给你一个 Stream<Person>,也许这正是你所需要的。 - zapl
“我想用集成替换list.get(0)” - 这是什么意思? - Michael Berry
@berry120 我想用迭代来替换。我的键盘选错字了。 - Marinescu Raluca
1个回答

6

看起来你需要:

list.stream()
    .flatMap(x -> findService.findAllUsers(x).stream())
    .collect(Collectors.groupingBy(Dummy::getId, Collectors.toList()));

谢谢。我使用foreach循环时迭代出错了。这是正确的解决方案。 - Marinescu Raluca
@MarinescuRaluca 很高兴为您服务 ;) - Eugene
.collect(Collectors.groupingBy(Dummy::getId, Collectors.toList())); can be simplified to .collect(Collectors.groupingBy(Dummy::getId)) - Ousmane D.
@Aominè 啊!确实。 - Eugene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接