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