Java 中 HashTable 的內部工作原理?
Hashtable 類是 Java 集合框架的一部分,它以鍵值對的形式將元素儲存在雜湊表中。鍵是一個物件,可用於獲取和接收與其關聯的值。Hashtable 和 HashMap 類之間存在一些相似之處,但 Hashtable 是同步的。此外,它的鍵必須與值關聯,它們不能為 null。本文旨在解釋 Java 中 Hash table 的內部工作原理。
Java 中 Hashtable 的工作原理
我們可以將 Hashtable 視為一個桶陣列,其中每個桶包含一個條目列表。一個條目包含鍵和值。我們指定一個鍵以及可以連結到該鍵的值。然後對鍵進行雜湊以生成雜湊碼,該雜湊碼進一步用作在表中儲存值的索引。幫助從雜湊碼獲取值位置的函式稱為雜湊函式。它始終返回一個稱為雜湊碼的正整數。多個物件在經過名為“equals()”的內建方法評估後可能會獲得相同的整數。但是,相似的物件始終具有相同的雜湊碼。
分配索引的公式
indexNumber = hashNumber % totalBuckets
這裡,“%”是返回餘數的模運算子
讓我們舉一個例子來說明上述公式的使用 -
問。假設我們得到一個名為 XYZ 的元素的 hashNumber 為 17,並且可用的桶總數為 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 的實際實現。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP