java 8中要映射的对象数组列表
我有一个具有构造函数的类java 8中要映射的对象数组列表,java,arrays,java-8,hashmap,java-stream,Java,Arrays,Java 8,Hashmap,Java Stream,我有一个具有构造函数的类 Person(Fruit... favoriteFruits) {} 和3个对象(比如说) 类PersonFruit[]getFavoriteFruits(){} 使用streams,我试图将其转换为地图 预计产量:(苹果,A)、(香蕉,B)、(木瓜,B)、(菠萝,C)、(橙色,C))地图 不知道如何将水果阵列展平成一条流我希望我没有打字错误。其思想是将列表转换为所有成对(人,果)的流,并按果对它们进行分组 Map<Fruit,List<Person>
Person(Fruit... favoriteFruits) {}
和3个对象(比如说)
类PersonFruit[]getFavoriteFruits(){}
使用streams,我试图将其转换为地图
预计产量:(苹果,A)、(香蕉,B)、(木瓜,B)、(菠萝,C)、(橙色,C))地图
不知道如何将水果阵列展平成一条流我希望我没有打字错误。其思想是将
列表
转换为所有成对(人,果
)的流
,并按果
对它们进行分组
Map<Fruit,List<Person>> map =
List.of(A,B,C)
.stream()
.flatMap(p -> Arrays.stream(p.getFavouriteFruits())
.map(f -> new SimpleEntry<Person,Fruit>(p,f)))
.collect(Collectors.groupingBy(Map.Entry::getValue,
Collectors.mapping(Map.Entry::getKey,
Collectors.toList())));
地图=
(A、B、C)项清单
.stream()
.flatMap(p->array.stream(p.getFavoriteFruits())
.map(f->newsimplentry(p,f)))
.collect(收集器.groupingBy(Map.Entry::getValue、,
Collectors.mapping(Map.Entry::getKey,
收藏家;
SimpleEntry
是java.util.AbstractMap.SimpleEntry
还是不将
交换到
Map<Fruit,List<Person>> map =
List.of(A,B,C)
.stream()
.flatMap(p -> Arrays.stream(p.getFavouriteFruits())
.map(f -> new SimpleEntry<Person,Fruit>(p,f)))
.collect(Collectors.groupingBy(Map.Entry::getValue,
Collectors.mapping(Map.Entry::getKey,
Collectors.toList())));