目录介绍
- 00.什么是散列函数
- 01.基本数据类型的散列码
- 02.字符串类型的散列码
- 03.压缩散列码
00.什么是散列函数
- 典型的散列函数首先将搜索键转换成一个称为散列码的整数值,然后将散列码压缩为散列表中的索引。
01.基本数据类型的散列码
- byte,short,int,char将被转换成int
- float将使用Float.floatToIntBits(key)作为散列码,返回一个int值,该值的比特表示与浮点数f的比特表示相同。
- long类型需要拆为前后两个32比特,并执行异或操作将两部分结合(称为折叠folding)
int hashCode = (int)(key ^ (key >> 32)); // ^是比特异或操作, >>按位右移操作符,左边补零
- double类型首先使用Double.doubleToLongBits方法转化为long,再进行折叠
long bits = Double.doubleToLongBits(key); int hashCode = (int)(bits ^ (bits >> 32));
02.字符串类型的散列码
- String