Stream groupingBy a list of enum types

前端 未结 2 1967
旧巷少年郎
旧巷少年郎 2021-01-23 01:15

I have a Product class:

class Product {
    String name;
    List group;
    //more fields, getters, setters
    public Product(String name, Group..         


        
2条回答
  •  醉梦人生
    2021-01-23 02:10

    You can create a stream of Entry by using flatMap and then collect them into Map> using Collectors.mapping

    productList.stream()
                   .flatMap(p->p.getGroup()
                                .stream()
                                .map(g->new AbstractMap.SimpleEntry<>(g,p.getName())))   // or from jdk 9 you can use Map.entry(g, p.getName());
                   .collect(Collectors.groupingBy(Map.Entry::getKey, 
                           Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
    

提交回复
热议问题