hashCode散列码
来源:互联网 发布:通话变音软件 编辑:程序博客网 时间:2024/05/22 14:14
基本数据类型包装类的散列码:
byte、char、short等就是转换成int值
long是64位的,而int是32位的,直接转换会丢弃数据。
java中采用value^(value>>32)得到long转换的散列码
举个例子:
10101100 右移四位后00001010 成功将低四位值去除,
再将两个值的低四位异或(也就是原高四位与原低四位异或),低四位变为0110,从而利用到了所有位数。
因此,虽然结果有64位,但移位后的两半都在低32位中,
此时转换成32位的int,可以直接丢弃高32位的值。
对于double64位,由于有小数点,不能用long的方法直接转。
Double.doubleToLongBits(value)
再对其进行long的操作。
对于float,同理转换成int的bit
最后对于String的散列码,是一种多项式求值的方法。
((u1*g+u2)*g+u3)*g+...代码表示为:for (int i = offset; i < end; ++i) { hash = 31*hash + chars[i]; }java中g取31
0 0
- Hashcode 散列码
- hashCode散列码
- 散列、散列码、hashCode()
- hashcode
- Hashcode
- hashCode()
- hashCode
- HashCode
- hashCode
- hashCode
- hashCode
- Hashcode
- hashcode
- hashcode
- HashCode
- hashcode
- hashCode
- HashCode
- 对 c\c++ char类型的理解
- SQL存储过程
- 六年征程新跨越,正益移动敲响上市宝钟
- Linux CentOS 6 64位系统安装Git工具环境教程
- 【哈工大oj】1037 - 组合数末尾的零(位运算,好题)
- hashCode散列码
- 第5讲 Linux系统安装--Samba配置
- 软件沙箱技术 – 安全分析沙箱Cuckoo Sandbox
- Android xUtils 上传文件到C# webservice 服务器
- 页面静态化
- ViewStub问题解析
- 勿忘国耻 奋发图强
- UIStackView学习
- java activiti工作流 myeclipse10插件下载地址