加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java集合中对象的可变字段

发布时间:2020-12-15 00:03:12 所属栏目:Java 来源:网络整理
导读:我正确地假设,如果你有一个包含在 Java集合 (或作为关于该事物的地图中的键),用于确定身份或关系(通过hashCode(),equals(),compareTo()等)的任何字段不能改变,而不会导致未指定的行为收集操作? (编辑:在 this other question提到) (换句话说,这些字段应该
我正确地假设,如果你有一个包含在 Java集合& (或作为关于该事物的地图中的键),用于确定身份或关系(通过hashCode(),equals(),compareTo()等)的任何字段不能改变,而不会导致未指定的行为收集操作? (编辑:在 this other question提到)

(换句话说,这些字段应该是不可变的,或者你应该要求对象从集合中删除,然后被改变,然后重新插入.)

我问的原因是我正在阅读Hibernate Annotations reference guide,它有一个例子,那里有一个HashSet&玩具>但玩具类的字段名称和序列是可变的,也用于hashCode()计算…一个红色的旗帜在我的头脑里,我只是想确保我明白它的含义.

解决方法

集合的javadoc说

Note: Great care must be exercised if
mutable objects are used as set
elements. The behavior of a set is not
specified if the value of an object is
changed in a manner that affects
equals comparisons while the object is
an element in the set. A special case
of this prohibition is that it is not
permissible for a set to contain
itself as an element.

这只是意味着您可以在一个集合中使用可变对象,甚至可以更改它们.您只需确保更改不会影响Set找到项目的方式.对于HashSet,这不需要更改用于计算hashCode()的字段.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读