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个对象(比如说)

类Person
Fruit[]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())));