Middle
Qual é a diferença entre os métodos put e compute?
sobes.tech IA
Resposta da IA
put(key, value) simplesmente associa value a key, substituindo o valor existente se a chave já estiver presente.
compute(key, remappingFunction) calcula um novo valor para key usando a função fornecida remappingFunction. A função recebe a chave atual e seu valor atual (ou null se a chave não existir) e retorna um novo valor que será associado à chave. Se a função retornar null, a entrada é removida.
Principais diferenças:
- Tratamento de chaves ausentes:
putinsere um novo valor.computepode usar o valor anterior (até mesmonull) para calcular um novo. - Dependência do valor anterior:
putdefine o valor independentemente do anterior.computeusa explicitamente o valor anterior na função de cálculo. - Remoção de entradas:
put(key, null)remove a entrada.computeremove a entrada se a função de cálculo retornarnull.
Exemplo de uso:
// Uso de put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Substitui 1 por 2
// Uso de compute para incrementar um 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); // Remove cherry se existia