创建自定义java类需要注意的

本文详细阐述了如何通过重写equals(Object o)方法和hashCode()方法,使得自定义Java类的对象能够在Set集合中进行等价比较,同时确保散列值的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 如果想让自定义的java类的对象在 Set 中可以模拟基本类型,只保存一份。(即令自定义的java类的对象之间可以进行“是否相等”的比较)

则需要:重写自定义java类的 equals(Object o)方法和 hashCode()方法。

关于这点的解释:

(转自:http://blog.youkuaiyun.com/miss_yu/article/details/437473 )

1.在散列(hashing)中,一個關鍵字的信息內容被用來確定唯一的一個值,稱位散列碼(hashcode)

 2.1. Rule: If the equals() method returns true, then hashCode() for both the objects must return the same value. Note that the reverse is not required. So, it is ok if the equals() method returns false but the hashCode() returns same value for both the objects.

2.2. The hasCode() method does not satisfy the requirement:
If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
For example, equals() will return true for: new Info("aa", "b", "c") and new Info("a", "ab", "c") but their hashCode() values will be different.

2.3 So we must overiding equals() and hascode() in bean ,assure the two object is equals


注意:在重写 equals( Object o)方法的时候, 要注意它的参数类型应是 Object ,不允许是其他的类型,否则就并非在重写 equals方法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值