Когда объект вставляется в HashMap
, он использует метод hashCode
, чтобы решить, где его хранить.Но hashCode
не предназначены для того, чтобы быть полностью уникальными.Могут быть разные значения, которые выдают одинаковые выходные данные, но не равны, поэтому HashMap
будет иметь какой-то метод борьбы с подобными коллизиями.get
вернет значение, только если ключи имеют одинаковые hashCode
и равны при использовании метода equals
."Sun"
не равно "TWO"
, но хеш-код "Sun"
делает равным хэш-коду "TWO"
.
Из документация :
если эта карта содержит отображение ключа k на значение v, такое что (key == null? K == null: key.equals (k)), то этот метод возвращает v;в противном случае возвращается ноль.(Может быть не более одного такого отображения.)
Таким образом, равенство, а не хеш-код, определяет, что будет возвращено.По сути, хеш-код - это просто оптимизация, позволяющая значительно ускорить процесс поиска объектов, которые могут быть равны.