gpt4 book ai didi

Java stream collect to map with multiple keys

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:42 26 4
gpt4 key购买 nike

我以为我在 Java 8 流方面做得很好,但后来......

我有一个 Foo接口(interface):

public interface Foo {
String getKey();
Stream<Bar> bars();
}

我知道我可以收集 Stream<Foo>进入 Map<String, Foo>使用每个键:

Map<String, Foo> foosByKey = fooStream.collect(
Collectors.toMap(Foo::getKey, Function.identity()));

但是如果我想将它们收集到 Map<Bar, Foo> 中怎么办? ?换句话说,对于每个 Foo在 Steam 中,我想把那个 Foo在 map 中键入每个 Bar Foo.bars() 返回的实例.我从哪里开始?

最佳答案

按照建议here ,您需要从每个 Foo 中提取 Bar 值并创建它们的对。一旦你有了这些对,你就可以将它们收集到一个 Map 中。例如,

Map<Bar, Foo> map = fooStream.flatMap(foo -> foo.bars().map(bar -> new SimpleEntry<>(bar, foo)))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));

我们在这里使用 SimpleEntry 是因为它可用(Java 没有更简单的 Pair 类型)。您可以自己编写更具体的内容。

关于Java stream collect to map with multiple keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37956711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com