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

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

Нет, hashCode объектов разных классов с одинаковыми полями не гарантированно будут одинаковыми. Хэш-код вычисляется на основе внутреннего состояния объекта и класса, к которому он принадлежит. Даже если поля идентичны, разные классы могут иметь разную реализацию hashCode().

По умолчанию Object.hashCode() использует внутренний адрес объекта, но если класс переопределяет hashCode(), то результат зависит от реализации. Например:

java
class A {
    int x;
    public A(int x) { this.x = x; }
    @Override public int hashCode() { return x; }
}

class B {
    int x;
    public B(int x) { this.x = x; }
    @Override public int hashCode() { return x * 31; }
}

A a = new A(5);
B b = new B(5);
// a.hashCode() == 5, b.hashCode() == 155 (разные!)

Для одинаковых hashCode нужно явно согласовать реализацию в обоих классах.

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

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

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

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