Карта и Groupby за один раз - PullRequest
       33

Карта и Groupby за один раз

0 голосов
/ 13 ноября 2018

У меня есть класс модели следующим образом:

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 ]

0 голосов
/ 13 ноября 2018
 ccplist.stream()
         .collect(Collectors.groupingBy(
               CCP::getPId,
               Collectors.mapping(CCP::getCId, Collectors.toList())));
0 голосов
/ 13 ноября 2018

Использование mapping:

Map<Integer, List<Integer>> xxx = 
    ccplist.stream()
           .collect(Collectors.groupingBy(CCP::getPId,
                                          Collectors.mapping(CCP::getCId,
                                                             Collectors.toList())));
...