Converter um mapa para lista de mapa

KayV:

Eu tenho um requisito onde eu quero converter um mapa em lista de mapa.

Eu tentei o seguinte código,

List<Map<String, Object>> response = new ArrayList<>();
Set<Long> categories = new HashSet<>();

List<CCP> ccpList = ccpRepository.findByPIdIn(ids);
Map<Integer, List<Integer>> categoriesByProduct = ccpList.stream()
                  .collect(Collectors.groupingBy(ccp -> ccp.getPId(), Collectors.mapping(ccp-> ccp.getCId(), Collectors.toList())));
for(Entry<Integer, List<Integer>> en : categoriesByProduct.entrySet()) {
    Map<String,Object> responseObject = new HashMap<>();
    responseObject.put("pid", en.getKey());
    responseObject.put("categories",en.getValue());
    response.add(responseObject);
}

Existe alguma maneira pela qual eu posso modificar o seguinte código em java 8 estilo:

for(Entry<Integer, List<Integer>> en : categoriesByProduct.entrySet()) {
    Map<String,Object> responseObject = new HashMap<>();
    responseObject.put("pid", en.getKey());
    responseObject.put("categories",en.getValue());
    response.add(responseObject);
}
Ralf Renz:

Coloque a for-loop-conteúdo em uma função e usá-lo com correntes:

response = categoriesByProduct.entrySet()
                              .stream()
                              .map(e -> toMap(e))
                              .collect(Collectors.toList());

public static Map<String, Object> toMap(Map.Entry<Integer, List<Integer>> en) {
    Map<String,Object> responseObject = new HashMap<>();
    responseObject.put("pid", en.getKey());
    responseObject.put("categories",en.getValue());
    return responseObject;
}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=199285&siteId=1
Recomendado
Clasificación