Ответ
HashSet использует HashMap внутри, где элементы — ключи. При добавлении элемента:
- Сначала вычисляется хеш-код элемента
- Проверяется, есть ли уже элемент с таким хеш-кодом
- Если хеш-код совпадает, вызывается
equals()для проверки реального равенства
Если equals() возвращает true, элемент не будет добавлен повторно (старый элемент останется без изменений).
Пример:
val set = HashSet<String>()
set.add("apple") // добавится
set.add("apple") // не добавится, так как equals() вернет true
Важно правильно переопределять hashCode() и equals() в своих классах, иначе логика сравнения может работать некорректно.