Будет ли один и тот же элемент перезаписываться при добавлении в HashSet

«Будет ли один и тот же элемент перезаписываться при добавлении в HashSet» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HashSet использует HashMap внутри, где элементы — ключи. При добавлении элемента:

  1. Сначала вычисляется хеш-код элемента
  2. Проверяется, есть ли уже элемент с таким хеш-кодом
  3. Если хеш-код совпадает, вызывается equals() для проверки реального равенства

Если equals() возвращает true, элемент не будет добавлен повторно (старый элемент останется без изменений).

Пример:

val set = HashSet<String>()
set.add("apple") // добавится
set.add("apple") // не добавится, так как equals() вернет true

Важно правильно переопределять hashCode() и equals() в своих классах, иначе логика сравнения может работать некорректно.