Sobes.tech
Junior — Middle

O compilador emitirá um erro ou aviso se usar um objeto imutável como chave numa tabela hash?

sobes.tech IA

Resposta da IA

Компилятор Java не выдаст ошибку или предупреждение, если использовать неизменяемый объект в качестве ключа в хэш-таблице (например, в HashMap). Важно, чтобы объект был корректно реализован с точки зрения методов hashCode() и equals(). Использование неизменяемого объекта в качестве ключа — это даже хорошая практика, так как изменение состояния ключа после помещения в хэш-таблицу может привести к проблемам с поиском.

Пример:

Map<String, Integer> map = new HashMap<>();
String key = "immutableKey";
map.put(key, 1);
// String — неизменяемый объект, безопасно использовать как ключ

Если же объект изменяемый и его поля, участвующие в hashCode() и equals(), меняются после добавления в карту, это может привести к ошибкам, но компилятор это не отследит.