Middle
¿Cuál es la diferencia entre los métodos put y compute?
sobes.tech AI
Respuesta de la IA
put(key, value) simplemente asocia value con key, reemplazando el valor existente si la clave ya está presente.
compute(key, remappingFunction) calcula un nuevo valor para key usando la función proporcionada remappingFunction. La función toma la clave actual y su valor actual (o null si la clave no existe) y devuelve un nuevo valor que será asociado con la clave. Si la función devuelve null, la entrada se elimina.
Diferencias principales:
- Manejo de claves ausentes:
putinserta un nuevo valor.computepuede usar el valor anterior (inclusonull) para calcular uno nuevo. - Dependencia del valor previo:
putestablece el valor independientemente del anterior.computeusa explícitamente el valor previo en la función de cálculo. - Eliminación de entradas:
put(key, null)elimina la entrada.computeelimina la entrada si la función de cálculo devuelvenull.
Ejemplo de uso:
// Uso de put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Reemplaza 1 por 2
// Uso de compute para incrementar un contador
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana será 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana será 2
countsCompute.compute("cherry", (key, value) -> null); // Elimina cherry si existía