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,>
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: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étodoforEach
se utiliza para iterar sobre la lista de claves y aplicar el métodocomputeIfAbsent
a cada clave a su vez. El mapa resultante tendrá las mismas entradas que el código original usando el bucle for.</string,>