赫赫,这是HashMap实现的散列算法,其实理解了hash就很容易了,hash算法要求存在里面的数据尽可能的分散,最好是1:1对应,这样就可以根据一个hash值为已确定一个对象了,可是实际上很难得做到完美的hashCode,随意必然会有重码,那么HashMap里的Entry就是表示key具有相同hashCode的对象组。index是根据key的hash计算出他在Entry[]中的位置,这就是%tab.length的意思
解决方案 »
- 大家帮个忙急啊!!!
- 求助,不知道该如何问了!!!!!!!!!!!!!!!!
- 用JAVA语言提取Sun LDAP中的密码, 怎么提取不出来啊? 有谁能帮帮我?
- java问题
- 一个困扰很久的问题:如何设置JSpinner控件不可用(即setEnabled(false))时的字体颜色?倾囊相送!非常感谢!
- 读取ObjectInputStream的阻塞问题,在线等,急!
- 请问,如何用JAVA得到当前系统屏幕的分辨率?
- 问个问题 顺便散分
- java.lang.classNotFoundException:oracle/jdbc/driver/OracleDriver
- java中的构建器是个什么概念????
- panel简单刷新问题
- 请教eclipse的import
是具体应射算法,关键一步是% tab.length这是把hashCode具体影射到tab数组的位置,其实就是简单的除tab的长度取余
而hash & 0x7FFFFFFF就是把一个hashCode与
01111111111111111111111111111111
按位与,相当于取绝对值,取绝对值的目的是怕出负数index = (hash & 0x7FFFFFFF) % tab.length等于,相当于
| hash | % tab.length