TGViewer
Java Developer Java Developer @java_developer · 6.35K subscribers
Post #882 22.5K
Ответ: "test"
Способ вычисления хэша map, set, list - это часть контракта соответствующих интерфейсов. Каждая реализация должна использовать формулу, указанную в контракте. Поэтому поведение будет общим для всех JDK.
Посмотрим теперь, какой же контракт и конкретные формулы для подсчета хеша у мапы.

"The hash code of a map is defined to be the sum of the hash codes of each entry in the map's entrySet() view."

Посмотрим, как вычисляется хешкод у Map.Entry:
"The hash code of a map entry e is defined to be:
(e.getKey()==null ? 0 : e.getKey().hashCode()) ^
(e.getValue()==null ? 0 : e.getValue().hashCode())"

Зная это, мы можем посчитать хешкод нашей мапы: он будет равен 0. Почему? Так как у единственной Map.Entry совпадают значения ключа и значения, то их хешкоды будут совпадать, а значит хешкод Map.Entry будет равен 0 (XOR двух одинаковых чисел дает всегда 0).
После добавления второго Map.Entry хешкод останется равным 0, так как там тоже совпадают значения ключа и значения. Повезло, повезло.
В итоге при вызове метод get будет искать Map.Entry в нужном бакете и, встретив нужную ноду, вызовет equals, который вернет true, так как при вставке значение ключа не копируется, и он будет отображать все изменения, которые с ним происходили.

Естественно, изменять ключ после вставки в HashMap крайне не рекомендуется, иначе потом можно его не найти. Но в данном конкретном случае нам повезло, что хешкод не изменился.
More from @java_developer
  1. Apr 20, 2025Что посмотреть на выходных — 20 Наткнулся в Ютубе на классное шоу. Такой мини-формат Своей…
  2. Apr 6, 2025Впечатления от JPoint 2025 моего коллеги Впечатления позитивные: большинство докладов понр…
  3. Apr 5, 2025JPoint 2025 Вчера сходил на JPoint — Java-конференцию для опытных разработчиков. Билет мне…
  4. Feb 4, 2025video post
  5. Feb 4, 2025яндексоиды, без негатива )
  6. Dec 24, 2024Kafka Какие есть гарантии доставки сообщений Ответ: 1. At most once (не более одного раза)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →