【发布时间】:2009-07-02 20:58:19
【问题描述】:
我是否正确假设如果您有一个包含在 Java Set 中的对象(或作为 Map 中的键),用于确定身份或关系的任何字段(通过hashCode()、equals()、compareTo() 等)不能在不导致集合操作出现未指定行为的情况下进行更改? (编辑:正如this other question 中提到的)
(换句话说,这些字段应该是不可变的,或者您应该要求将对象从集合中删除,然后更改,然后重新插入。)
我问的原因是我正在阅读Hibernate Annotations reference guide,它有一个示例,其中有一个HashSet<Toy>,但Toy 类具有字段name 和serial,它们是可变的并且也被使用在hashCode() 的计算中......我的脑海中出现了一个危险信号,我只是想确保我理解它的含义。
【问题讨论】:
标签: java collections identity mutable