如何正确使用JDK8流的Groupingby? [重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

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>>。我该怎么做?

java java-8 java-stream
1个回答
1
投票

你需要使用Collectors.mapping来映射codeDTO,在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;
}
© www.soinside.com 2019 - 2024. All rights reserved.