首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于Hashtable的一个有关问题

2012-01-01 
关于Hashtable的一个问题index (hash & 0x7FFFFFFF) % tab.length请问上面的语句为何原理,hash为关键字

关于Hashtable的一个问题
index = (hash & 0x7FFFFFFF) % tab.length;

请问上面的语句为何原理,hash为关键字的hash值,index为关键字在数组中的入口地址,即下标

[解决办法]
java 中 & 是位运算符
运算方法是,只有当两个变量相同位置上的位都是1是,&运算符才将结果位设置为1
比如说
byte b = 4 & 12;
那末打印b的结果就是4
因为
4的二进制是0100
12的二进制是1100
按位做&运算,结果就是0100,所以就是4


%,是用来取余数
比如 5%3 结果就是2
[解决办法]
hash&0x7FFFFFFF就是保证首位为0而其它位不变,取模tab.length是因为hash&0x7FFFFFFF的值可能超过tab.length,取模后保证比tab.length小,因为你入口地址不可能比tab.length还大
[解决办法]
那就是算法的需要的阿
就像说为何
x = (y+1)*z

热点排行