如何正确使用JDK8流的Groupingby?

时间:2018-03-01 02:47:23

标签: java java-8 java-stream

public Map<Long, List<String>> groupby(){
 List<DTO> lst = getResultFromDB();
 Map<Long, List<DTO>> result = 
                   lst.stream().collect(Collectors.groupingby(DTO:getId));
 return result;
}
class DTO {
 private Long id;
 private String code;
}

我想要Map<Long, List<String>>(字符串为DTO.getCode()),而不是Map<Long, List<DTO>>。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要使用Collectors.mapping来映射code中的DTO groupingBy

public Map<Long, List<String>> groupby() {
    List<DTO> lst = getResultFromDB();
    Map<Long, List<String>> result = lst
            .stream()
            .collect(Collectors.groupingBy(DTO::getId, Collectors.mapping(DTO::getCode, Collectors.toList())));
    return result;
}