Бывали ситуации, когда hashCode возвращал отрицательное значение? Как вы с этим справлялись?

Да, метод hashCode() в Java может возвращать отрицательные значения, так как он возвращает int, который может быть как положительным, так и отрицательным.

Короткий ответ

Что ответить на собеседовании

Да, метод hashCode() в Java может возвращать отрицательные значения, так как он возвращает int, который может быть как положительным, так и отрицательным.

Подробный разбор

Ответ с пояснениями

Да, метод hashCode() в Java может возвращать отрицательные значения, так как он возвращает int, который может быть как положительным, так и отрицательным.

Если нужно использовать hashCode для индексации в массивах или других структурах данных, где индекс должен быть неотрицательным, обычно применяют следующую технику:

int hash = obj.hashCode();
int positiveHash = hash & 0x7fffffff; // обнуляет знак, делая число положительным
int index = positiveHash % array.length;

Или можно использовать Math.abs(), но с осторожностью, так как Math.abs(Integer.MIN_VALUE) возвращает отрицательное число:

int hash = obj.hashCode();
int positiveHash = (hash == Integer.MIN_VALUE) ? 0 : Math.abs(hash);
int index = positiveHash % array.length;

Таким образом, чтобы избежать отрицательных индексов, нужно явно приводить hashCode к неотрицательному значению.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее