hashcode()方法(已修改)

hashcode()方法

1.     hashCode()好比确定哪个放某个类的桶,而桶里可以放不止一个类

 

2.    方法返回映射到物理地址的值,如不设置,在创建类的时候,按类的类型产生和分配。机制:散列存储

 

3.     hashCode()提高了Map里面的搜索效率

如果hashCode()不同,则两个对象一定不相同

                  如果对象相同,hashCode()一定相同

4.  Set因为需要唯一,每次添加的时候调用equals()方法。如果每次调用equals()方法效率过低。如果调用元素的hashCode()方法就能定位他应该放置的物理位置。如果已经有元素了,调用equals,如果没有直接放进去。

    hashCode相等只能保证两个对象在一个HASH表里的同一条链上,但是否相等需要调用equals 

 

5.  因为一般都是先调用hashCode(),相比为true之后才调用equals(),所以改写equals的时候总是要改写hashCode()

.

 

6.  使用HashCode()算法,防止内存泄露和溢出

    如:若HashCode()方法依靠对象的成员变量值有关,放入一个Hash算法分配的Collection中,成员变量被修改后,HashCode值发生变化,调用remove(oldRefer),无法找到对应HashCode(存储是按原HashCode值存储的),则删除失败。导致内存泄露

 

 

7.  hashCode约定:

如果equals方法做比较的信息没有被修改的话,则该对象多次调用hashCode(),必须返回同一整数

如果两个对象equals是相等的,则两个对象的hashCode方法必须产生相同的整数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值