Хешкод мы не меняли. Значит даже если ранее поместили в в мапу какие-то значения, то пр новом поиске выберем правильную корзину. А если equals написан правильно, то объект как был равен себе, так и будет и поэтому в этой корзине мы себя сможем получить. В чем проблема может быть. Я так понимаю, даже если будет нарушен контракт между хэшкодом и иквелсом, и у двух объектов одинаковых по иквелсу будут разные хэшкоды, то это все равно не повлечет ошибки? Ведь корзины будут разные. Или я чего-то важного не допонимаю?
Если ты переопределял equals, значит ты уже какие то поля в него не включил. После изменения таких полей, у тебя изменится hashcode, а equals останется прежним.
Согласен. Но как это скажется на возможности получить элемент из хэшмапы, а котором написано в посте?
Вы имеете ввиду если не сохранять контракт для значения, а не для ключа?
По хэшкоду найдет другой объект, запустит equals и проиграет в сравнение.
нет. значение у нас же вообще тут сбоку стоит. у нас же все на ключ в хешмапе завязано. номер корзины определяется на основании хеша ключа. поиск в корзине по иквелку ключа. Так ведь? или у меня опять пробел в знаниях?
Обсуждают сегодня