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