hashCode()方法的作用



哈希算法提高了从集合中查找元素的效率,这种方式经集合分成若干个存储区域,每个对象可以计算出一个“哈希码”,对哈希码进行分组,魅族分别对应某个存储区域,根据对象的哈希码就可以知道该随想存储在哪个区域。

HashSet就是采用哈希算法存储对象的集合,它内部采用对某个数字取余的方式对哈希码进行分组和划分存储区域。Object类中定义了一个hashCode方法来返回每一个java对象的哈希码,当从hashSet集合中查找元素时,java系统首先调用对象的hashCode方法获得对象的哈希码,然后根据哈希码找到还对象的存储区域,最后取出该区域的每一个元素与该对象进行equals方法比较,则按就不用遍历整个集合。可见HashSet集合具有较好的检索功能,但Hashset的存储效率要低些。

一般来说,如果一个类的两个对象的Equals比较为True时,这两个对象的hashCode()也相同,hashCode()相同时,Equals()不一定为true

当一个对象被存入HashSet后,就不能该这个对象中那些参与hashCode()的字段了,否则,对象修改后的哈希值与最初存入是的哈希值就不同了,在这种情况下,即使在Contains方法使用该对象的当前应用最为参数去HashSet中检索对象也将返回false,这也会导致无法从HashSet中单独删除该对象,从而造成内存泄露。

 

 

 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值