我是否正确假设如果您有一个包含在 Java Set<> 中的对象(或作为 Map<> 中的键),任何用于确定身份或关系的字段(通过hashCode()
,equals()
等compareTo()
.) 不能在不导致对集合的操作出现未指定行为的情况下进行更改?(编辑:正如在另一个问题中提到的)
(换句话说,这些字段应该是不可变的,或者您应该要求将对象从集合中删除,然后更改,然后重新插入。)
我问的原因是我正在阅读Hibernate Annotations 参考指南,它有一个示例,其中有一个HashSet<Toy>
但Toy
该类具有字段name
并且serial
是可变的并且也用于hashCode()
计算......我脑海中出现了一个危险信号我只是想确保我理解它的含义。