Java Hashtable是如何工作的

Java Hashtable是如何工作的

Hashtable类是Java集合框架的一部分,在哈希表中以键值对的形式存储其元素。键是可以用来获取和接收与之关联的值的对象。Hashtable和HashMap类之间存在一些相似之处,但哈希表是同步的。另外,它的键必须与值关联,不能为null。本文旨在解释Java中哈希表的内部工作原理。

Java中Hashtable的工作原理

我们可以将Hashtable视为一个桶的数组,每个桶包含一个条目列表。一个条目包括键和值。我们指定一个键和与其相关联的值。然后将键进行哈希处理,生成一个哈希代码,该代码被用作在表中存储值的索引。帮助从哈希码获取值的位置的函数称为哈希函数。它总是返回一个被称为哈希码的正整数值。多个对象在通过一个名为“equals()”的内置方法进行评估后,可能会获得相同的整数值。但是,相似的对象始终具有相同的哈希码。

分配索引的公式

索引号 = 哈希号 % 总桶数

这里,“%”是取模运算符,返回余数

让我们以一个示例来说明上述公式的使用:

假设我们得到了17作为名为XYZ的元素的哈希号,总可用桶数为5。那么,它将存储在哪个索引号上?

解决方案 - 17 % 5 = 2,因此它将获得索引号2。

Hashtable中的碰撞

正如前面讨论的,多个对象可能获得相同的哈希码,这导致一种称为碰撞的情况。当两个或多个键具有相同的哈希值并映射到同一个桶时,就会发生碰撞,导致性能下降。然而,它不会造成任何功能上的混乱。

声明Hashtable的语法

Hashtable<TypeOfKey, TypeOfValue> nameOfTable = new Hashtable<>();

方法

  • 第一步是导入‘java.util’包,以便我们可以使用Hashtable类。

  • 定义Hashtable类的一个实例,并使用名为‘put()’的内置方法将一些对象添加到其中。

  • 现在,使用for-each循环,并在其中使用‘keySet()’方法来访问与键关联的所有值。

示例1

以下示例说明了如何在Java中实现Hashtable。

import java.util.*;
public class Table {
   public static void main(String[] args) {
      Hashtable<String, Integer> workers = new Hashtable<>();

      // Adding elements in the workers table
      workers.put("Vaibhav", 4000);
      workers.put("Ansh", 3000);
      workers.put("Vivek", 1500);
      workers.put("Aman", 2000);
      workers.put("Tapas", 2500);

      // printing details workers table
      System.out.println("Elements in the given table: ");
      for (String unKey : workers.keySet()) {
         System.out.println("Name: " + unKey + ", Salary: " + workers.get(unKey));
      }
   }
}

输出

Elements in the given table:
Name: Aman, Salary: 2000
Name: Ansh, Salary: 3000
Name: Tapas, Salary: 2500
Name: Vivek, Salary: 1500
Name: Vaibhav, Salary: 4000

示例2

在下面的示例中,我们将使用内置方法’get()’来检索Hashtable的值。该方法接受一个键并返回相应的值。

import java.util.*;
public class Table {
   public static void main(String[] args) {
      Hashtable<String, Integer> workers = new Hashtable<>();

      // Adding elements in the workers table
      workers.put("Vaibhav", 4000);
      workers.put("Ansh", 3000);
      workers.put("Vivek", 1500);
      workers.put("Aman", 2000);
      workers.put("Tapas", 2500);

      // printing details workers table one by one
      System.out.println("Value stored at key Ansh: " + workers.get("Ansh"));
      System.out.println("Value stored at key Vivek: " + workers.get("Vivek"));
      System.out.println("Value stored at key Aman: " + workers.get("Aman"));
   }
}

输出

Value stored at key Ansh: 3000
Value stored at key Vivek: 1500
Value stored at key Aman: 2000

结论

我们从定义Hashtable类开始讨论了本文,并在下一部分通过一个示例解释了它的内部工作原理。接着,我们通过Java示例程序讨论了Hashtable的实际应用实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程