一、hashcode方法
1、介绍
Object.hashCode()方法: 返回该对象的哈希码值。
支持此方法是为了提高哈希表(如HashMap)的性能,查询迅速。如字符串存储到hashmap的时候,get的时候直接通过hashcode方法找到存储的位置。
2、hashcode使用的hash算法
Object类总的hashcode方法是个native方法,因此实现是使用C或者C++实现的。
hashcode的大致计算方式:先得到对象的内存地址并转换成整数,然后通过hash函数算法计算得到hashcode。
3、hashmap使用的hash算法
HashMap中的hash算法如下:
二、equals方法
1、原生的equals方法比较的是应用地址,String类重新了hashcode方法,因此比较的是字符串内容;
2、将对象(假设是Student类,包含name和age两个属性)作为HashMap的key,如何实现去重的?其实一样的道理,也需要重新hashcode方法,这个方法中放一些需要确定唯一的属性,共同生成一个hashcode,这个hashcode就是hash表的地址。
另外,也可以实现equals方法,即什么情况下两个对象相等。