gpt4 book ai didi

java - 使用 Java 8 流对象将列表对象转换为自定义映射

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

我有一个类“First”,其中包含对类“Second”的引用作为列表。我正在尝试通过使用 Stream(或)flap Map(或)groupingBy 以 Java 8 的方式实现以下 block

foreach(First a: listOfFirst){
for (Second b: a.getSecondDetails()) {
inputMap.put(b, a);
}
}

我尝试了以下简化方式

listOfFirst.stream()
.flatMap(p -> p.getSecondDetails().stream())
.collect(Collectors.toMap(p -> p, q -> q));

我在这里遗漏了一些东西,请帮助我

最佳答案

你需要“记住”每个Second实例对应的First实例。例如,您可以通过创建 Map.Entry 实例来做到这一点:

Map<Second,First> result =
listOfFirst.stream()
.flatMap(p->p.getSecondDetails()
.stream()
.map(sec -> new SimpleEntry<>(sec,p))
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue));

关于java - 使用 Java 8 流对象将列表对象转换为自定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55216461/

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