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.