• Java 資料結構教程

Java 資料結構 - 雜湊表類



雜湊表是一種以關聯方式儲存資料的資料結構。在雜湊表中,資料以陣列格式儲存,每個資料值都有其自身的唯一索引值。如果知道所需資料的索引,則訪問資料變得非常快。

因此,它成為一種資料結構,其中插入和搜尋操作非常快,而不管資料的大小如何。雜湊表使用陣列作為儲存介質,並使用雜湊技術生成要插入元素或從中定位元素的索引。

Java 的雜湊表類

Hashtable 是最初的 java.util 的一部分,是 Dictionary 的具體實現。

但是,Java 2 重新設計了 Hashtable,使其也實現了 Map 介面。因此,Hashtable 現在已整合到集合框架中。它類似於 HashMap,但它是同步的。

與 HashMap 一樣,Hashtable 在雜湊表中儲存鍵/值對。使用 Hashtable 時,您指定用作鍵的物件以及您希望與該鍵連結的值。然後對鍵進行雜湊處理,生成的雜湊碼用作在表中儲存值的索引。

以下是 Hashtable 類提供的建構函式列表。

序號 建構函式和描述
1

Hashtable( )

這是雜湊表的預設建構函式,它例項化 Hashtable 類。

2

Hashtable(int size)

此建構函式接受一個整數引數,並建立一個雜湊表,其初始大小由整數 value size 指定。

3

Hashtable(int size, float fillRatio)

這將建立一個雜湊表,其初始大小由 size 指定,填充率由 fillRatio 指定。此比率必須介於 0.0 和 1.0 之間,它決定雜湊表在向上調整大小之前可以有多滿。

4

Hashtable(Map < ? extends K, ? extends V > t)

這將使用給定的對映構造一個 Hashtable。

除了 Map 介面定義的方法外,Hashtable 還定義了以下方法

序號 方法和描述
1

void clear( )

重置並清空雜湊表。

2

Object clone( )

返回呼叫物件的副本。

3

boolean contains(Object value)

如果雜湊表中存在某個等於 value 的值,則返回 true。如果未找到該值,則返回 false。

4

boolean containsKey(Object key)

如果雜湊表中存在某個等於 key 的鍵,則返回 true。如果未找到該鍵,則返回 false。

5

boolean containsValue(Object value)

如果雜湊表中存在某個等於 value 的值,則返回 true。如果未找到該值,則返回 false。

6

Enumeration elements( )

返回雜湊表中包含的值的列舉。

7

Object get(Object key)

返回包含與 key 關聯的值的物件。如果鍵不在雜湊表中,則返回 null 物件。

8

boolean isEmpty( )

如果雜湊表為空,則返回 true;如果它包含至少一個鍵,則返回 false。

9

Enumeration keys( )

返回雜湊表中包含的鍵的列舉。

10

Object put(Object key, Object value)

將鍵和值插入雜湊表。如果鍵不在雜湊表中,則返回 null;如果鍵已在雜湊表中,則返回與鍵關聯的先前值。

11

void rehash( )

增加雜湊表的大小並重新雜湊其所有鍵。

12

Object remove(Object key)

刪除鍵及其值。返回與鍵關聯的值。如果鍵不在雜湊表中,則返回 null 物件。

13

int size( )

返回雜湊表中條目的數量。

14

String toString( )

返回雜湊表的字串等價物。

示例

以下程式說明了此資料結構支援的幾種方法

import java.util.*;
public class HashTableDemo {
   public static void main(String args[]) {
      
      // Create a hash map
      Hashtable balance = new Hashtable();
      Enumeration names;
      String str;
      double bal;
      
      balance.put("Zara", new Double(3434.34));
      balance.put("Mahnaz", new Double(123.22));
      balance.put("Ayan", new Double(1378.00));
      balance.put("Daisy", new Double(99.22));
      balance.put("Qadir", new Double(-19.08));

      // Show all balances in hash table.
      names = balance.keys();
      
      while(names.hasMoreElements()) {
         str = (String) names.nextElement();
         System.out.println(str + ": " + balance.get(str));
      }        
      System.out.println();
      
      // Deposit 1,000 into Zara's account
      bal = ((Double)balance.get("Zara")).doubleValue();
      balance.put("Zara", new Double(bal + 1000));
      System.out.println("Zara's new balance: " + balance.get("Zara"));
   }
}

輸出

Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0

Zara's new balance: 4434.34
廣告
© . All rights reserved.