Sobes.tech
Junior — Middle

Quais as consequências de usar chaves modificáveis em coleções de dados?

sobes.tech IA

Resposta da IA

A utilização de chaves mutáveis em coleções de dados, como HashMap ou HashSet em Java, pode levar a problemas graves. A principal razão é que as chaves devem ser imutáveis para que o código hash e a igualdade permaneçam constantes.

Se a chave for alterada após ser inserida na coleção, então:

  • O código hash da chave pode mudar, e a coleção não conseguirá encontrar o elemento por essa chave.
  • Isso resultará na 'perda' do elemento: ele permanecerá na estrutura, mas não será acessível.
  • A integridade dos dados e o funcionamento correto da coleção são comprometidos.

Exemplo:

Map<List<String>, String> map = new HashMap<>();
List<String> key = new ArrayList<>();
key.add("initial");
map.put(key, "value");

// Alterar a chave após adicioná-la
key.add("changed");

// Tentar obter o valor pela chave não funcionará
String val = map.get(key); // null

Portanto, recomenda-se usar objetos imutáveis como chaves, por exemplo, strings, números ou classes imutáveis criadas especificamente.