Должен ли я переопределить hashCode для ключа или значения для HashMap? - PullRequest
3 голосов
/ 09 июля 2020

Использует ли HashMap методы hashCode и equals ключа или значения для хранения своих записей, т. Е. Какой класс, методы hashCode и equals нам нужно переопределить? Должен ли это быть класс ключа (K) или класс значения (V)?

Ответы [ 2 ]

3 голосов
/ 09 июля 2020

Вашему классу ключа необходимы соответствующие переопределения для hashCode и равно.

Код ha sh ключа определяет, в какую корзину ha sh должен быть помещен объект.

Метод equals ключа позволяет вам различать guish между ключами, которые имеют sh в одной и той же корзине.

3 голосов
/ 09 июля 2020

Значение по существу не имеет отношения к самой карте: это только ключ, который учитывается HashMap, когда он решает, куда поместить пару ключ / значение в своей внутренней структуре данных.

Однако , вы можете также захотеть переопределить его для значения, например, если вам нужно сделать map.values().contains(...).

...