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

Будет ли одинаковый hashCode у объектов разных классов с одинаковыми значениями полей

Нет, hashCode у объектов разных классов с одинаковыми значениями полей не гарантированно будет одинаковым.

По умолчанию hashCode() в Java генерируется на основе адреса памяти объекта, поэтому разные классы (даже с одинаковыми полями) будут иметь разные hashCode.

Но если классы переопределяют hashCode() одинаково (например, через Objects.hash()), то при одинаковых полях hashCode может совпадать:

java
class A {
    int x;
    public int hashCode() { return Objects.hash(x); }
}

class B {
    int x;
    public int hashCode() { return Objects.hash(x); }
}

A a = new A(); a.x = 5;
B b = new B(); b.x = 5;
// a.hashCode() == b.hashCode() -> true

Без переопределения hashCode() объекты будут иметь разные хэши, даже если поля одинаковые.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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