我有一个类“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/