Похоже, у вас есть два неправильных представления: что такое на самом деле hashCode
и как работает оператор +
.
Сначала я расскажу о последнем. Помимо присвоения (=
), когда вы применяете оператор к объекту, он никак не изменяет объект. Устав
anotherArrayList.add(definingString + rockets.teamName);
не изменяет и не влияет на переменную rockets
. Он не «меняет хэш-код» или какую-либо другую информацию о нем, он просто копирует значение rockets.teamName
, соединяет его с чем-то другим и создает новый объект. И этот новый объект будет String, так что вы все равно не сможете добавить его в список.
Теперь о hashCode. Объектам не "присваивается хэш-код" или что-либо подобное. В hashCode () нет ничего особенного, магического или автоматического, это просто метод, который возвращает целое число. Он возвращает то, что вы сказали, чтобы он возвращал, и, если вы не переопределите это, реализация по умолчанию возвращает число, которое никогда не изменяется для данного объекта.
Если вы замените объект другим, например, поместив еще один Team
в эту позицию в списке, тогда у этого объекта будет свой собственный хэш-код, который может отличаться от первого. Но просто используя объект или одно из его полей
никак не влияет на это.