Встречается на собеседованиях • сегодня

Как сравниваются объекты внутри HashSet

HashSet использует hashCode() и equals() для сравнения объектов. При добавлении элемента: 1. Сначала вычисляется hashCode() объекта 2. Если хэш-код уникальный - элемент добавляется 3. Если хэш-код совпадает с существующим - вызывается equals() для точного сравнения Пример: ```java class Person { String name; @Override public int hashCode() { return name.hashCode(); } @Override public boolean equals(Object obj) { if (!(obj instanceof Person)) return false; return this.name.equals(((Person)obj).name); } } Set set = new HashSet<>(); set.add(new Person("Alice")); // Добавится set.add(new Person("Alice")); // Не добавится, т.к. equals() вернет true ``` Важно: если переопределить hashCode(), нужно переопределить и equals(), соблюдая контракт: - Если a.equals(b) == true, то a.hashCode() == b.hashCode() - Обратное не обязательно
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы