关于JAVA中hashCode

hash code 即散列码根据对象计算出的一个整型值,散列码是没有规律的。
如果两个对象相等(equal() 返回true),则hashCode一定相等,如果两个对象hashCode相等,则对象不一定相等。

String类的散列码计算如下:根据内容计算
int hash = 0 ;
for ( int i = 0 ; i < length (); i ++) {
    hash = 31 * hash + charAt (i );
}
Object类则是根据对象的存储地址计算的。
String s = "OK" ;                           
StringBuilder sb = new StringBuilder (s);
String t = new String ("OK" );
StringBuilder tb = new StringBuilder (t);
上面四个对象的散列码如下:
2524
25860399 
2524
5184781
字符串s和t的散列码相同,则是由内容计算出, 而sb和tb的散列码则是根据存储地址而来。

HashCode方法作用:
在java的集合中Set是不允许元素有重复的,如果调用equal方法,新的元素每次都要和Set中所有元素比较一次,非常浪费时间。采用hash表原理可以提高效率。
hash码是由对象存储地址算出来的,根据hash码就可以找到对象的物理存储位置,只要判断该位置是否有元素即可。有则代表Set中已经有相等元素,没有,则可以将新元素插入Set中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值