请高手指点,我要是弄懂,送200分!

treeroot 2004-09-20 03:09:32
static int hash(Object x) {
int h = x.hashCode();

h += ~(h << 9);
h ^= (h >>> 14);
h += (h << 4);
h ^= (h >>> 10);
return h;
}
这个方法是HashMap中定义的一个方法:HashMap不直接使用对象的
hashCode(),而是通过这个算法来提高离散性,但是这个算法我实在
看不懂,不知道这个方法是怎么弄出来的。
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ntzls 2004-09-20
  • 打赏
  • 举报
回复
当然不是,肯定是有相关的理论依据计算出来的,才疏学浅,偶也看不懂这个算法思想。
treeroot 2004-09-20
  • 打赏
  • 举报
回复
那么这些数字 5,14,4,10都是凭个人爱好弄出来的么?
ntzls 2004-09-20
  • 打赏
  • 举报
回复
就是一个散列函数,移过来再变着移过去,目的就是减少桶冲突,偶以前亦喜欢这样写但可读性太差,且效率无明显提高,虽然这是类库中的源码吧^_^
treeroot 2004-09-20
  • 打赏
  • 举报
回复
在HashTable里是直接用对象的hashCode(),HashMap这个改进一定要它的道理!
alaal 2004-09-20
  • 打赏
  • 举报
回复
高深~~占第一排好好听听

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧