es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inicializar las claves del mapa a partir de una lista con un valor predeterminado.

Necesito inicializar las claves de un mapa a partir de una lista y dar un valor predeterminado para cada entrada. Actualmente uso un bucle for:

Map<string, string=""> myMap = new HashMap<>();
List<string> keys = Arrays.asList("a", "b", "c", "d");
for (String key : keys){
    myMap.put(key, "default");
}

¿Existe una forma más limpia de hacer esto? ¿Stream o lambda tal vez?</string,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar los streams de Java 8 y el método Map.computeIfAbsent para inicializar las claves de un mapa a partir de una lista y proporcionar un valor predeterminado para cada entrada. Aquí tienes un ejemplo:

    Map<string, string=""> myMap = new HashMap<>();
    List<string> keys = Arrays.asList("a", "b", "c", "d");
    
    keys.forEach(key -> myMap.computeIfAbsent(key, k -> "default"));
    

    El método computeIfAbsent toma una clave y una función que calcula un valor predeterminado si la clave no está presente en el mapa. En este caso, estamos proporcionando una expresión lambda que siempre devuelve la cadena “default”. El método forEach se utiliza para iterar sobre la lista de claves y aplicar el método computeIfAbsent a cada clave a su vez. El mapa resultante tendrá las mismas entradas que el código original usando el bucle for.</string,>

Comments are closed.