39. Почему нельзя использовать byte[] в качестве ключа в HashMap?

39. Почему нельзя использовать byte[] в качестве ключа в HashMap?

UNKNOWN

Хэш-код массива не зависит от хранимых в нем элементов, а присваивается при создании массива(метод вычисления хэш-кода массива не переопределен и вычисляется по стандартному
Object.hashCode() на основании адреса массива).

Так же у массивов не переопределен equals и выполняется сравнение указателей. Это приводит к тому, что обратиться к сохраненному с ключом-массивом элементу не получится при использовании другого массива такого же размера и с такими же элементами, доступ можно осуществить лишь в одном случае — при использовании той же самой ссылки на массив, что использовалась для сохранения элемента


Предыдущий вопрос: 38. Возможна ли ситуация, когда HashMap выродится в список даже с ключами имеющими разные hashCode()?

Следующий вопрос: 40. Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку:напишите мне

Report Page