Java 中的哈希技术

2025年8月18日 | 4 分钟阅读

哈希函数是一个键值映射函数。当使用这些哈希方法将两个或多个键映射到同一个值时,就会出现重复值。链式哈希的使用可以防止冲突。每个哈希表单元都应导向一个包含具有相同哈希函数值的条目的链表。

让我们创建一个返回具有“N”个存储桶的哈希表的哈希函数。

要将节点添加到哈希表中,我们需要找到指定键的哈希索引。

哈希函数也可能用于此目的。

插入:转到由上述哈希索引确定的存储桶,并将新节点添加到列表的末尾。

删除:要从哈希表中删除节点,请计算键的哈希索引,移动到由计算出的哈希索引确定的存储桶,在当前存储桶的列表中搜索具有给定键的节点,然后删除它(如果找到)。

Java 中实现哈希的方法

1. 基于 HashTable 的方法(哈希的同步实现)

HashTableDemo.java

输出

{5=Hello, 3=You are visiting, 2=Javatpoint, 1=website}

这里,上面的 Java 代码演示了 Hashtable 的用法。

2. 基于 HashMap 的方法(非同步的更快哈希实现)

HashMapDemo.java

输出

{1=1, 5=1, 6=3, 10=2}

上面的 Java 代码显示了 Hashmap 的用法。这是一种非同步的、更快的哈希方法。

3. 基于 LinkedHashMap 的方法(类似于 HashMap,但保留元素的顺序)

LinkedHashMapDemo.java

输出

{One=Robin, Two=Satyam, Three=Kanishk}
Getting value for key 'one': Robin
Size of the Hashmap: 3
Is Hashmap empty? false
Contains key 'two'? true
Contains value 'Kanishk? true
delete element 'one': Robin
{Two=Satyam, Three=Kanishk}

在上面的程序中,LinkedHashMap 与其不同的方法一起使用,例如size()、get()、isEmpty()、containsKey()、containsValue()、remove()。

4. 基于 ConcurrentHashMap 的方法(类似于 HashTable,同步,但由于使用了多个锁而速度更快)

DemoforConcurrentHashMap.java

输出

ConcurentHashMap: {201=How, 202=are, 203=you}
ConcurentHashMap: {201=How, 202=are, 203=you}
ConcurentHashMap: {201=Who, 202=are, 203=you}
ConcurentHashMap: {201=Who, 202=are}

上面的 Java 程序显示了 ConcurrentHashMap 的实现及其不同的方法,例如put()、putIfAbsent()、replace()、remove()。