昨天,重温了一下数据结构中的hash散列算法,将值和地址挂钩,是的,在c中可以这样搞,因为c有指针,可以直接操作内存地址,然后通过偏移量直接找到地址,因为知道hash算法的函数公式。但是java中,理论上来说没有指针,无法直接操作地址,那么它如何存储查询hash表,如HashTable,HashMap?只有看源代码了。。。这里hash基本概念不再累述,如负载因子,线性法,溢出区法,地址链表法。。。原来在Java中,HashTable计算hash的时候是这样的:先h ^= (h >>> 20) ^ (h >>> 12),再return h ^ (h >>> 7) ^ (h >>> 4);h是对象的hashcode(知道为啥effective java中说重写equals的时候要重写hashcode了吧)。其中就说put(k,v)这个方法吧,在put方法中,先用上面的方法计算hash值,然后计算index索引,其实hash表就是一个大的数组(hash表),index是放入数组的位置,其中index 的算法是hash值&数组的长度-1,然后就往数组里放,如果当前数组中的值大于等于极限值,那么将数组大小*2。所以java中的hashtable其实就是数组,在c中的地址操作改成了数组的操作。
分享到:
- 2008-12-10 09:44
- 浏览 1769
- 评论(0)
- 论坛回复 / 浏览 (0 / 2336)
- 查看更多
相关推荐
采用java实现的常用hash算法归总。
哈希计算工具 java-hash.7z
RS-Hash Function Value: " + ghl.RSHash(key)); System.out.println(" 2. JS-Hash Function Value: " + ghl.JSHash(key)); System.out.println(" 3. PJW-Hash Function Value: " + ghl.PJWHash(key)); System....
基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发...
哈希计算工具 java-hash
非常使用的 基于geohash 找一定范围内的 最近位置java代码
工具类
Java实现的Hash Collision DoS Attack
geohash-java a Java implement of Geohash 提供下列接口: Modifier and Type Method and Description String toGeoHash(double lng, double lat) 根据经纬度计算 geohash String toGeoHash(double lng, double lat...
java中的Geohash工具类
Java程序。可以生成文件的MD5哈希值。生成的Hash值可保存到txt文件中。程序完全可运行。
在Java中运用Hashtables,?贘ava中运用Hashtables
别人写的一个一致性hash的java实现,分享下
java源码:哈希计算工具 java-hash.7z
java_Hash算法大全
基于Java的哈希计算工具 Java-hash.zip
基于java的哈希计算工具 java-hash.zip
murmurhash-java 这是Viliam Holub对快速非加密murmurhash2算法的一种实现。 它用Java编写,并以32位和64位版本实现。 如果您想了解最新的杂音世界,请查看Guava的类,该类具有murmur3和32位的实现。建造用maven构建...
geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码。GeoHash将二维的经纬度转换成一维的字符串。
基于Java的实例源码-哈希计算工具 Java-hash.zip