Ответ
При совпадении хэшей ключей в HashSet используется цепочка (chaining) для хранения элементов с одинаковым хэшем.
- Хэш-функция вычисляет индекс корзины (bucket) в массиве.
- Если корзина пуста — элемент добавляется туда.
- Если хэши совпали, но
equals()возвращаетfalse— элемент добавляется в связный список (или дерево, если элементов много) внутри корзины. - При поиске сначала проверяется хэш, затем
equals()для всех элементов в корзине.
val set = HashSet<String>()
set.add("a") // hash("a") = 97
set.add("b") // hash("b") = 98
set.add("a") // не добавится, так как equals() вернет true