社区
Java SE
帖子详情
关于Hashtable的一个问题
hunauwuke
2009-08-12 08:37:29
index = (hash & 0x7FFFFFFF) % tab.length;
请问上面的语句为何原理,hash为关键字的hash值,index为关键字在数组中的入口地址,即下标
...全文
109
8
打赏
收藏
关于Hashtable的一个问题
index = (hash & 0x7FFFFFFF) % tab.length; 请问上面的语句为何原理,hash为关键字的hash值,index为关键字在数组中的入口地址,即下标
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dz007
2009-08-12
打赏
举报
回复
可能是要取正吧,首位是符号位,0就是正啦……
lh_fengyuzhe
2009-08-12
打赏
举报
回复
index = (hash & 0x7FFFFFFF) % tab.length
是具体映射算法,关键一步是% tab.length这是把hashCode具体映射到tab数组的位置,其实就是简单的除tab的长度取余
而hash & 0x7FFFFFFF就是把一个hashCode与
01111111111111111111111111111111
按位与,相当于取绝对值,取绝对值的目的是怕出负数
index = (hash & 0x7FFFFFFF) % tab.length
等于,相当于
| hash | % tab.length
hunauwuke
2009-08-12
打赏
举报
回复
还想问一下,为什么要保证首位为0,那个hash&0x7FFFFFFF是怎么算的
hunauwuke
2009-08-12
打赏
举报
回复
哦,明白了,谢谢楼2楼三的
lovecj6185
2009-08-12
打赏
举报
回复
那就是算法的需要的阿
就像说为何
x = (y+1)*z
gesanri
2009-08-12
打赏
举报
回复
hash&0x7FFFFFFF就是保证首位为0而其它位不变,取模tab.length是因为hash&0x7FFFFFFF的值可能超过tab.length,取模后保证比tab.length小,因为你入口地址不可能比tab.length还大
hunauwuke
2009-08-12
打赏
举报
回复
我的意思是为什么要用0x7FFFFFFF与hash位运算,然后再与tab.length取余
lovecj6185
2009-08-12
打赏
举报
回复
java 中 & 是位运算符
运算方法是,只有当两个变量相同位置上的位都是1是,&运算符才将结果位设置为1
比如说
byte b = 4 & 12;
那末打印b的结果就是4
因为
4的二进制是0100
12的二进制是1100
按位做&运算,结果就是0100,所以就是4
%,是用来取余数
比如 5%3 结果就是2
关于
一个
Hashtable
的小小
问题
public bool InsertEmp(Employees emp) {
Hashtable
ht=new
Hashtable
(); ht.add("No",emp.No); ... return Insert(ht,"Employee); }
一个
古老的
问题
HashMap与
Hashtable
区别
HashTable
的应用非常广泛,HashMap是新框架中用来代替
HashTable
的类,也就是说建议使用HashMap,不要使用
HashTable
。可能你觉得
HashTable
很好用,为什么不用呢?这里简单分析他们的区别。 1.
HashTable
的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。...
C#
Hashtable
赋值给另
一个
Hashtable
时
c#中想将
一个
hashtable
的元素全部给另
一个
hashbale时, 使用迭代
一个
一个
元素赋值 如: ammus.Clear(); IDictionaryEnumerator ie = _temp.GetEnumerator(); while (ie.MoveNext()) ammus.Add...
ACM_1789_ArrayList存储
Hashtable
及
Hashtable
遍历方法
import java.util.ArrayList; import java.util.
Hashtable
; import java.util.Scanner; public class ACM_1789 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generate
hashtable
数据循环读取的顺序
问题
很早之前写的
一个
程序,有个地方临时用到了
hashtable
保存中间数据, 最近客户反应某个输出结果有个地方反了,如是我读取结果时的代码看了下,没发现
问题
接下来查看数据库,也没发现
问题
,最后重新从头测试一次,发现在从
Hashtable
读取数据保存到数据库中时就搞反了,演示代码如下 代码 Private Sub Button1_Click(ByVal sender As ...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章