昨天,重温了一下数据结构中的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
- 浏览 1807
- 评论(0)
- 论坛回复 / 浏览 (0 / 2356)
- 查看更多
相关推荐
在计算机科学中,哈希(Hash)算法是一种用于将任意长度的数据映射为固定长度输出的函数。这种输出通常称为哈希值或消息摘要。在Java编程语言中,实现哈希算法可以方便地用于数据验证、查找表以及密码存储等多种用途...
Java实现GeoHash算法是一种在IT领域中用于地理位置数据存储和检索的技术。GeoHash将经纬度坐标转换为字符串,使得地理位置可以被高效地索引和查询。这种算法利用了空间分割和编码策略,使得相邻的位置在编码后具有...
在Java中,常见的哈希函数有MD5(Message-Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)、SHA-256等。这些算法都具有不同的安全性和效率特性。 2. **MD5**: MD5是一种广泛使用的哈希函数,生成32位的...
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中实现GeoHash,主要包含以下几个步骤: 1. **坐标标准化**:首先,需要将输入的经纬度坐标归一化到上述的全球坐标范围内。这是因为GeoHash算法依赖于这个标准化的坐标系。 2. **经纬度分割**:对经度和纬度...
基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发源码-哈希计算工具 Java-hash.zip 基于java的开发...
在Java中,常见的哈希算法库有Java自带的`java.security.MessageDigest`类,它支持多种哈希算法,如MD5(Message-Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)和SHA-256等。使用这些算法,可以创建一个`...
非常使用的 基于geohash 找一定范围内的 最近位置java代码
Java中的Geohash工具类可以帮助开发者处理与地理位置相关的任务,提高效率并降低复杂性。本文将深入探讨Geohash的工作原理,如何在Java中实现以及在Android开发中的应用。 首先,我们来理解什么是Geohash。Geohash...
Java实现的Hash Collision DoS Attack
JAVA源码哈希计算工具java-hash
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 哈希算法大全是指在 Java 语言中实现的一系列哈希算法,目的是为了对字符串或其他数据进行哈希处理从而生成唯一的数字签名。哈希算法的应用非常广泛,如在数据库索引、数据压缩、加密解密、身份验证等领域都有...
这个"java-hash.7z"压缩包包含了一个Java实现的哈希计算工具,这是一份经典的学习资源,可以帮助开发者深入理解哈希算法及其在Java中的应用。 哈希(Hash)函数是一种将任意长度输入(也叫做预映射pre-image)通过...
java资源哈希计算工具 java-hash提取方式是百度网盘分享地址
标签"java 哈希值 MD5Util获取hash"进一步强调了这个工具类是用Java语言实现的,主要功能是计算哈希值,特别是MD5哈希值,而`MD5Util获取hash`可能是指`MD5Util`类中用于计算哈希的具体方法。 在提供的压缩包文件...
在这个Java实现中,我们看到的是Ketama一致性哈希算法,这是一种在实践中广泛应用的一致性哈希变体。 Ketama一致性哈希算法由Last.fm的工程师开发,其设计目标是优化分布式哈希表的性能,特别是在处理大量小键值对...
本篇将深入探讨Java中的哈希算法和其在Java-hash.zip压缩包中的应用。 首先,哈希(Hash)函数是将任意长度的输入(也叫做预映射pre-image)通过特定算法转换成固定长度输出的过程,这个输出就是哈希值或散列值。在...
1)GeoHash用一个字符串表示经度和纬度两个坐标,比如我现在所在位置的GeoHash值为 wx4sv61q; 2)GeoHash标识的并不是一个点,而是一个区域,比如 wx4sv61q 对应的就是一个矩形区域; 3)编码的前缀可以标识更大...