Java-Hashtable-Klasse

Java 数据结构Java-Datenstrukturen


Hashtable ist Teil des ursprünglichen java.util und eine konkrete Implementierung eines Dictionary.

Das in Java 2 überarbeitete Hashtable implementiert jedoch das Map-Interface, sodass Hashtable jetzt in das Collections-Framework integriert ist. Es ist der HashMap-Klasse sehr ähnlich, unterstützt aber Synchronisierung.

Wie HashMap speichert Hashtable Schlüssel-Wert-Paare in einer Hashtabelle. Wenn Sie eine Hashtabelle verwenden, geben Sie das Objekt an, das als Schlüssel verwendet werden soll, und den Wert, der mit diesem Schlüssel verknüpft werden soll.

Dann wird der Schlüssel gehasht, und der resultierende Hashcode wird als Index für den in der Tabelle gespeicherten Wert verwendet.

Hashtable definiert vier Konstruktoren. Der erste ist der Standardkonstruktor:

Hashtable()

Der zweite Konstruktor erstellt eine Hashtabelle mit der angegebenen Größe:

Hashtable(int size)

Der dritte Konstruktor erstellt eine Hashtabelle mit der angegebenen Größe und legt das Füllverhältnis über fillRatio fest.

Das Füllverhältnis muss zwischen 0.0 und 1.0 liegen und bestimmt, wie voll die Hashtabelle werden kann, bevor ihre Größe geändert wird:

Hashtable(int size,float fillRatio)

Der vierte Konstruktor erstellt eine Hashtabelle, die mit den Elementen in M initialisiert wird.

Die Kapazität der Hashtabelle wird auf das Doppelte der Größe von M gesetzt.

Hashtable(Map m)

Zusätzlich zu den in der Map-Schnittstelle definierten Methoden definiert Hashtable die folgenden Methoden:

Nein. Methodenbeschreibung
1 void clear( )
Leert diese Hashtabelle, sodass sie keine Schlüssel enthält.
2 Object clone( )
Erstellt eine flache Kopie dieser Hashtabelle.
3 boolean contains(Object value)
Testet, ob ein Schlüssel mit dem angegebenen Wert in dieser Hashtabelle verknüpft ist.
4 boolean containsKey(Object key)
Testet, ob das angegebene Objekt ein Schlüssel in dieser Hashtabelle ist.
5 boolean containsValue(Object value)
Gibt true zurück, wenn diese Hashtable einen oder mehrere Schlüssel auf diesen Wert abbildet.
6 Enumeration elements( )
Gibt eine Aufzählung der Werte in dieser Hashtabelle zurück.
7 Object get(Object key)
Gibt den Wert zurück, auf den der angegebene Schlüssel abgebildet ist, oder null, wenn diese Map keine Zuordnung für den Schlüssel enthält. Genauer gesagt: Wenn diese Map eine Zuordnung von Schlüssel k zu Wert v enthält, die (key.equals(k)) erfüllt, dann gibt diese Methode v zurück; andernfalls gibt sie null zurück.
8 boolean isEmpty( )
Prüft, ob diese Hash-Tabelle keine Schlüssel auf Werte abbildet.
9 Enumeration keys( )
Gibt eine Aufzählung der Schlüssel in dieser Hash-Tabelle zurück.
10 Object put(Object key, Object value)
Ordnet den angegebenen Schlüssel dem angegebenen Wert in dieser Hash-Tabelle zu.
11 void rehash( )
Erhöht die Kapazität dieser Hash-Tabelle und reorganisiert sie intern, sodass ihre Elemente effizienter untergebracht und abgerufen werden können.
12 Object remove(Object key)
Entfernt den Schlüssel und seinen zugehörigen Wert aus der Hash-Tabelle.
13 int size( )
Gibt die Anzahl der Schlüssel in dieser Hash-Tabelle zurück.
14 String toString( )
Gibt eine Zeichenfolgendarstellung dieses Hashtable-Objekts zurück, die eine Menge von Einträgen ist, die in geschweifte Klammern eingeschlossen und durch die ASCII-Zeichen ', ' (Komma und Leerzeichen) getrennt sind.

Beispiel

Das folgende Programm demonstriert mehrere Methoden, die von dieser Datenstruktur unterstützt werden:

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"));
   }
}

Das Ergebnis des Kompilierens und Ausführens des obigen Beispiels ist wie folgt:

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

Zara's new balance: 4434.34

Java 数据结构Java-Datenstrukturen

Andere Erweiterungen