ключевой объект HashMap

150
30 марта 2018, 12:21

Что будет, если попытаться вставить в HashMap уже имеющийся в ней ключевой объект?

Answer 1

Все зависит от того переопределены ли в объекте-ключе методы hashcode и equals

HashMap сначала по хешкоду вычисляет корзину, потом проходит по элементам корзины и если встречает подходящий хешкод, то проверяет равность объектов через equals.

Значит, если хоть один из методов в объекте-ключе не переопределен, то поиск закончится ничем. По Object.hashCode() может и найдется нужная корзина (случайно), но equals очно даст false, если это 2 объекта с разными ссылками

Если же оба метода переопределены, то как сказали выше значение по этому ключу просто перезатрется.

Есть один интересный момент: метод Map.put(K key, V value) возвращает предыдущее значение по данному ключу, если его не было вернет null. Иногда это полезно.

Answer 2

Eсли попытаться повторно вставить ключ в HashMap, он заменит старый, поскольку класс HashMap не допускает дублирующихся ключей. А тот же ключ означает такой же хэш-код, так что он попадет в то же место в хэш-сегменте. https://javarush.ru/groups/posts/404-khitrihe-voprosih-po-java-kotorihe-chasto-zadajut-na-sobesedovanijakh-

READ ALSO
Java Объекты. Производительность. Различия

Java Объекты. Производительность. Различия

Дано: Класс у которого прописаны множество функций(без создания дополнительных объектов)Один из других классов каждую секунду вызывает...

187
Когда удаляется session bean?

Когда удаляется session bean?

Cоздал сессионный бин и идея такова, что когда сессия истекает я вызываю метод connectionClose(); чтоб закрыть соединение к базев сервлете установил...

159
подключить input checkbox + radio в одну функцию

подключить input checkbox + radio в одну функцию

на странице есть радиокнопка и чекбокс-при нажатии они должны вывести 1 общую картинку, можно ли их соединить в 1 функцию пробовала так писать,но...

248