Iteración de la lista de objetos Hash Map utilizando Java 8 Streams [cerrado]

Sep 20 2020

Tengo que iterar la lista de objetos HashMap. si el valor del objeto del mapa es verdadero, entonces tengo que devolver esa entrada a un objeto Hash del mapa usando la API de flujo de Java 8


public class HashMapCheck {
    static Map<String, Boolean> map;
    static Map<String, Boolean> map2;
    static List<Map> objMap;

    public static void main(String args[]) {
        map = new HashMap<String, Boolean>();
        map.put("1", true);
        map.put("2", false);

        map2 = new HashMap<String, Boolean>();
        map2.put("4", true);
        map2.put("5", true);
        objMap = new ArrayList<Map>();
        objMap.add(map);
        objMap.add(map2);

        //Iterate
    }
}

Respuestas

Steve Sep 20 2020 at 01:42

No soy un experto en transmisiones de Java, así que tal vez esta no sea la solución mínima, pero esto es lo que se me ocurrió al usar transmisiones para obtener lo que creo que quieres:

public class HashMapCheck {
    static Map<String, Boolean> map;
    static Map<String, Boolean> map2;
    static List<Map<String, Boolean>> objMap;

    public static void main(String[] args) {

        map = new HashMap<>();
        map.put("1", true);
        map.put("2", false);

        map2 = new HashMap<>();
        map2.put("4", true);
        map2.put("5", true);
        objMap = new ArrayList<>();
        objMap.add(map);
        objMap.add(map2);

        Map<String, Boolean> result = objMap.stream().flatMap(x -> x.entrySet().stream()).filter(Map.Entry::getValue).
                collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        System.out.println(result);

    }
}

Resultado:

{1=true, 4=true, 5=true}