代码之家  ›  专栏  ›  技术社区  ›  KayV

地图和Groupby一气呵成

  •  4
  • KayV  · 技术社区  · 6 年前

    我有一个模型类,如下所示:

    public class CCP implements Serializable{
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @Column(name = "p_id")
        private Integer pId;
    
        @Id
        @Column(name = "c_id")
        private Integer cId;
    
        @Column(name = "priority")
        private Integer priority;
    
    }
    

    我有以下要求:

    1. 转换 List<CCP> Map<pid, List<cid>>

    也就是说,我想将CCP对象列表转换为一个以pid为键、以关联CID列表为值的映射。

    Map<Integer, List<CCP>> xxx = ccplist.stream()
                    .collect(Collectors.groupingBy(ccp -> ccp.getPId()));
    

    但这只是中共的名单。

    如何在此处获取cid列表而不是CCP?

    2 回复  |  直到 6 年前
        1
  •  4
  •   Eran    6 年前

    使用 mapping

    Map<Integer, List<Integer>> xxx = 
        ccplist.stream()
               .collect(Collectors.groupingBy(CCP::getPId,
                                              Collectors.mapping(CCP::getCId,
                                                                 Collectors.toList())));
    
        2
  •  2
  •   Eugene    6 年前
     ccplist.stream()
             .collect(Collectors.groupingBy(
                   CCP::getPId,
                   Collectors.mapping(CCP::getCId, Collectors.toList())));