[英]Converting list object into custom Map using Java 8 stream object
I have a class "First" which contains reference to Class "Second" as list. 我有一个类“First”,它包含对Class“Second”的引用作为列表。 I am trying to achieve below block in Java 8 way by using Stream (or) flap Map (or) groupingBy
我试图通过使用Stream(或)flap Map(或)groupingBy以Java 8方式实现下面的块
foreach(First a: listOfFirst){
for (Second b: a.getSecondDetails()) {
inputMap.put(b, a);
}
}
I tried below simplified way 我试过以下简化方式
listOfFirst.stream()
.flatMap(p -> p.getSecondDetails().stream())
.collect(Collectors.toMap(p -> p, q -> q));
I am missing something here, please help me out 我在这里遗漏了一些东西,请帮帮我
You need to "remember" the First
instance corresponding to each Second
instance. 您需要“记住”与每个
Second
实例对应的First
实例。 You can do it, for example, by creating Map.Entry
instances: 例如,您可以通过创建
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.