Правильно ли я предполагаю, что если у вас есть объект, который содержится внутри Java Set < > (или как ключ в Map < > для этого), любые поля, которые используются для определения личности или отношения (через hashCode(), equals(), compareTo() и т.д.) нельзя изменить, не вызывая неуказанного поведения для операций над коллекцией? (отредактируйте: как указано в этот другой вопрос)
(Другими словами, эти поля должны быть либо неизменными, либо вам нужно будет удалить объект из коллекции, а затем изменить, а затем снова вставить.)
Я прошу, что я читал справочное руководство Hibernate Annotations, и в нем есть пример, где есть HashSet<Toy>, но класс Toy имеет поля name и serial, которые изменяются и также используются в расчете hashCode()... красный флаг ушел в моей голове, и я просто хотел убедиться, что понял последствия он.