Sobes.tech
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: put inserta un nuevo valor. compute puede usar el valor anterior (incluso null) para calcular uno nuevo.
  • Dependencia del valor previo: put establece el valor independientemente del anterior. compute usa explícitamente el valor previo en la función de cálculo.
  • Eliminación de entradas: put(key, null) elimina la entrada. compute elimina la entrada si la función de cálculo devuelve null.

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