Filtro em um valor de interior Mapa usando Java 8 fluxos

adbdkb:

Tenho um mapa de mapas - Mapa> - coleção.

Eu preciso para filtrar o mapa e obter o mapa exterior que tem um determinado valor para uma determinada chave do mapa interno.

Eu tentei algumas combinações, mas ele não está funcionando.

Como faço para conseguir isso.

Isto é o que eu tentei

Map<String, Map<String, String>> originalMap = getOriginalMap();

String channelId = "channelIdVal";

Map<String, Map<String, String>> filteredMapForKey = originalMap.entrySet().stream()
    .collect(Collectors.toMap(Map.Entry::getKey,
        e -> e.getValue().entrySet().stream().filter(innerMap -> innerMap.getValue().equalsIgnoreCase(channelId)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))));

Basicamente, eu estou esperando o filteredMapForKey ter uma única entrada cujo mapa (o valor da entrada) interior para conter uma chave cujo valor é channelId

Como faço para conseguir isso. O código acima está retornando todo o mapa original com as mesmas chaves, mas vazia mapas internos, exceto para o válido. Para o mapa válido, em vez de devolver o mapa interna completa, é apenas devolver o mapa com a chave e valor de ID do canal correspondente

obrigado

também:

Parece que há duas coisas para corrigir aqui:

  1. A lógica de filtro para filtrar as entradas em vez de filtrá-los.

  2. Para filtrar apenas aquelas entradas exteriores para os quais mapa interiores satisfaz a condição descrita.

Você pode conseguir que, como:

Map<String, Map<String, String>> filteredMapForKey = originalMap.entrySet()
        .stream()
        .filter(e -> e.getValue()
                .values()
                .stream()
                .anyMatch(innerMapVal -> innerMapVal.equalsIgnoreCase(channelId)))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

Este filtra todas as entradas de mapa exteriores de tal modo que, o mapa interno para eles tem um valor que é igual (ignoreCase) para o dado channelIde, em seguida, recolhe estas entradas para um semelhante Mapcomo a entrada.

Acho que você gosta

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