Java 8 Strem mapa del filtro en el mapa - Map <String, Map <String, Empleado >>

user1578872:

Cómo filtrar un Map<String,Map<String,Employee>>uso de Java 8 Filtro?

Tengo que filtro sólo cuando cualquiera de los empleados en la lista que tiene un valor de campo Sexo = "M".

Entrada:

Map<String,Map<String,Employee>>

Salida:

Map<String,Map<String,Employee>>

Criterios de filtro:

Employee.genter = "M"

También tengo que volver mapa vacío si el resultado filtrado está vacía.

Probé el siguiente, pero no está funcionando como se esperaba. Se está volviendo el único si todos los empleados son de género con "M".

tempCollection.entrySet().stream()
                        .filter(i -> i.getValue().entrySet().stream().allMatch(e-> "M".equals(e.getValue().getGender())))
                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
también:

Simplemente podría iterar sobre los pares de valores clave y el filtro como:

Map<String, Map<String, Employee>> output = new HashMap<>();
tempCollection.forEach((k, v) -> {
    if (v.values().stream().anyMatch(i -> "M".equals(i.getGender()))) {
        output.put(k, v.entrySet()
                .stream()
                .filter(i -> "M".equals(i.getValue().getGender()))
                .collect(toMap(Map.Entry::getKey, Map.Entry::getValue)));
    }
});

Supongo que te gusta

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