what is java hashtable hashtable implementation example
In diesem Tutorial wird erläutert, was eine Java-HashTable, Konstruktoren und Methoden für Hashtable-Klasse, Implementierung und Hashtable im Vergleich zu Hashmap sind:
Was ist eine HashTable?
Eine Hashtabelle in Java ist ein Array von Elementen, die Listen sind. Jede dieser Listen wird als bezeichnet Eimer .
Es ordnet die Schlüssel Werten zu. In Java wird die Hash-Tabelle von der HashTable-Klasse implementiert. Diese Klasse implementiert die Kartenschnittstelle und erbt die Wörterbuchklasse.
=> Lesen Sie hier den perfekten Java-Schulungsleitfaden.
Einige der einzigartigen Eigenschaften von Hashtable in Java sind folgende:
- Es ist ein Array, das Listen oder Buckets als Elemente enthält.
- Es hat einzigartige Elemente.
- In der Hashtabelle gibt es keinen Nullschlüssel oder Nullwert.
- Es ähnelt Hashmap, ist jedoch synchronisiert.
Was du lernen wirst:
HashTable-Klasse in Java
In Java ist diese Klasse Mitglied des Pakets java.util. Daher müssen wir eine der folgenden Anweisungen in unser Programm aufnehmen, um die Funktionalität der HashTable-Klasse einzuschließen.
import java.util. *;
ODER
import java.util.HashTable;
Eine allgemeine Klassendeklaration für die Klasse java.util.HashTable ist unten angegeben:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Hier,
- K => Schlüsseltyp der HashTable
- V => Art der zugeordneten Werte
Die HashTable-Klassen-API besteht aus Konstruktoren, die zum Erstellen der Klassenobjekte und der verschiedenen Operationen oder Methoden verwendet werden, die Teil der Klasse sind und ein reibungsloses Funktionieren der HashTable-Klasse bewirken.
Konstruktoren der HashTable-Klasse
Konstruktor-Prototyp | Beschreibung | |
---|---|---|
einstellen | einstellen | Es wird eine festgelegte Ansicht der in der Karte enthaltenen Zuordnungen zurückgegeben. |
Hash-tabelle () | Standardkonstruktor: Erstellt ein HashTable-Klassenobjekt mit der anfänglichen Standardkapazität und dem Auslastungsfaktor. | |
Hashtable (int Kapazität) | Erstellt eine Hash-Tabelle mit der angegebenen Anfangskapazität. | |
Hashtable (int Kapazität, float loadFactor) | Erstellt ein Hash-Tabellenobjekt mit der anfänglichen Kapazität = Kapazität und dem Ladefaktor = loadFactor. | |
Hashtable (Karte t) | Erstellt eine neue Hash-Tabelle aus der angegebenen Map, die als Argument angegeben wurde. |
Methoden der HashTable-Klasse
Methode | Methodenprototyp | Beschreibung |
---|---|---|
klar | void clear () | Löscht die HashTable durch Zurücksetzen der Werte. |
Klon | Objektklon () | Erstellt eine flache Kopie des HashTable-Objekts und gibt es zurück. |
berechnen | V-Berechnung (K-Taste, BiFunction remappingFunction) | Berechnet die Zuordnung zwischen dem angegebenen Schlüssel und dem Wert mithilfe der Neuzuordnungsfunktion. |
computeIfAbsent | V computeIfAbsent (K-Taste, Function MappingFunction) | Berechnet die Zuordnung zwischen dem angegebenen Schlüssel und dem Wert mithilfe der Neuzuordnungsfunktion, wenn der angegebene Schlüssel dem angegebenen Wert noch nicht zugeordnet ist. |
computeIfPresent | V computeIfPresent (K-Taste, BiFunction remappingFunction) | Wenn der angegebene Schlüssel vorhanden ist, wird die Neuzuordnungsfunktion verwendet, um eine neue Zuordnung zwischen dem angegebenen Schlüssel und dem Wert zu berechnen. |
Elemente | Aufzählungselemente () | Es gibt eine Aufzählung der Werte in der Hash-Tabelle zurück. |
gleich | Boolescher Wert gleich (Objekt o) | Vergleicht das angegebene Objekt mit der HashTable. |
für jedes | void forEach (BiConsumer-Aktion) | Die angegebene Aktion wird für jedes der HashTable-Elemente ausgeführt, bis alle Elemente erschöpft sind. |
getOrDefault | V getOrDefault (Objektschlüssel, V defaultValue) | Es gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder defaultValue, wenn die Zuordnung keine Zuordnung für den Schlüssel enthält. |
Hash-Code | int hashCode () | Gibt den Hash-Code der HashTable zurück. |
Schlüssel | Aufzählungsschlüssel () | Gibt Schlüssel in der HashTable als Aufzählung zurück. |
Schlüsselsatz | Setze keySet () | Gibt das Keyset (Schlüssel als Set) für die HashTable zurück. |
gehen | V merge (K-Taste, V-Wert, BiFunction remappingFunction) | Ordnet den angegebenen Schlüssel mithilfe der Remapping-Funktion dem Wert ungleich Null zu, wenn der Schlüssel noch nicht vorhanden oder null ist. |
stellen | V put (K-Taste, V-Wert) | Fügt ein neues Schlüssel-Wert-Paar in die HashTable ein. |
putAll | void putAll (Map t)) | Fügt die Schlüssel-Wert-Paare der angegebenen Karte in die HashTable ein oder kopiert sie. |
putIfAbsent | V putIfAbsent (K-Taste, V-Wert) | Ordnet den angegebenen Schlüssel dem Nullwert zu, wenn der Schlüssel noch nicht vorhanden oder mit Null verknüpft ist. |
entfernen | boolean remove (Objektschlüssel, Objektwert) | Löscht das angegebene Schlüssel-Wert-Paar aus der HashTable. |
ersetzen | V ersetzen (K-Taste, V-Wert) | Es ersetzt den Wert des angegebenen Schlüssels durch den angegebenen Wert. |
ersetzen | Boolescher Ersatz (K-Taste, V oldValue, V newValue) | Ersetzt den alten Wert des angegebenen Schlüssels durch den neuen Wert. |
alles ersetzen | void replaceAll (BiFunction-Funktion) | Alle Einträge in der HashTable werden durch den Wert ersetzt, der sich aus der Auswertung der angegebenen Funktion ergibt. |
toString | String toString () | Konvertiert das HashTable-Objekt in seine Zeichenfolgendarstellung. |
Werte | Sammlungswerte () | Gibt die Werte in der HashTable als Auflistung zurück. |
enthält | Boolescher Wert enthält (Objektwert) | Überprüft, ob der angegebene Wert in der HashTable vorhanden ist. Gibt true zurück, wenn vorhanden, andernfalls false. |
enthält Wert | Boolescher Wert enthältWert (Objektwert) | Überprüft, ob in der HashTable ein Wert vorhanden ist, der dem angegebenen Wert entspricht, und gibt true zurück. |
enthältKey | Boolescher Wert enthält Schlüssel (Objektschlüssel) | Überprüft, ob es einen Schlüssel gibt, der dem angegebenen Schlüssel in der HashTable entspricht, und gibt true zurück, wenn ja. |
ist leer | boolean isEmpty () | Überprüft, ob die angegebene HashTable leer ist, und gibt true zurück, wenn ja. |
aufwärmen | geschützte Leerenaufbereitung () | Es wird verwendet, um die Größe der Hash-Tabelle zu erhöhen und alle ihre Schlüssel erneut aufzuwärmen. |
erhalten | V get (Objektschlüssel) | Ruft den Wert für den angegebenen Schlüssel ab. |
entfernen | V entfernen (Objektschlüssel) | Löscht den angegebenen Schlüssel und Wert und gibt diesen Wert zurück. |
Größe | int size () | Gibt die Größe oder Anzahl der in der HashTable vorhandenen Elemente zurück. |
Implementierung von HashTable
Im Folgenden wird die Implementierung der Klasse in Java angegeben. Hier haben wir alle wichtigen Methoden der Klasse demonstriert.
beste kostenlose Backup-Software für Windows 7 64-Bit
import java.util.*; class Main{ public static void main(String args()){ //create a Hashtable and initiliaze it Hashtable hash_tab=new Hashtable (); hash_tab.put(100,'Red'); hash_tab.put(101,'Green'); hash_tab.put(104,'Blue'); hash_tab.put(102,'Orange'); hash_tab.put(103,'Brown'); //obtain entrySet for the Hashtable and print the elments System.out.println('The contents of Hashtable:'); for(Map.Entry m:hash_tab.entrySet()){ System.out.println(m.getKey()+' : '+m.getValue()); } //getOrDefault operation => get the value at given key or output default message System.out.println('Hashtable Value at 101: ' + hash_tab.getOrDefault(101, 'Value Not Found')); System.out.println('Hashtable Value at 105: ' +hash_tab.getOrDefault(105, 'Value Not Found')); //remove operation => delete value at given key hash_tab.remove(102); System.out.println('After remove(102), the Hash Table: '+ hash_tab); //putIfAbsent operation=>update the key-value pair in table if absent hash_tab.putIfAbsent(102,'Orange'); System.out.println('Updated Hash Table: '+hash_tab); } }
Ausgabe:
Der Inhalt von Hashtable:
104: Blau
103: Brown
102: Orange
101: Grün
100: Netzwerk
Hashtable-Wert bei 101: Grün
Hashtable-Wert bei 105: Wert nicht gefunden
Nach dem Entfernen (102) wird die Hash-Tabelle angezeigt: {104 = Blau, 103 = Braun, 101 = Grün, 100 = Rot}
Aktualisierte Hash-Tabelle: {104 = Blau, 103 = Braun, 102 = Orange, 101 = Grün, 100 = Rot}
HashTable Java Beispiel
In diesem Programm definieren wir eine Hashtabelle mit den Schlüsseln als Kontoinhabernamen mit ihren jeweiligen Kontensalden als Werte. Zuerst rufen wir die Schlüssel als Aufzählung aus der HashTable ab. Mit dieser Aufzählung drucken wir dann die Schlüssel-Wert-Paare aus der HashTable.
Später aktualisieren wir den Kontostand eines der Inhaber und drucken den aktualisierten Betrag aus.
Das unten angegebene Programm zeigt diese Implementierung.
import java.util.*; public class Main { public static void main(String args()) { // Create a Hashtable of account balance Hashtable acc_balance = new Hashtable(); Enumeration person_names; String name_str; double balance; //initialize the Hashtable acc_balance.put('Lily', new Double(4367.34)); acc_balance.put('Ben', new Double(95.43)); acc_balance.put('Lacy', new Double(1200.00)); acc_balance.put('Dillon', new Double(499.22)); acc_balance.put('James', new Double(78.48)); // retrieve the keys of the Hashtable person_names = acc_balance.keys(); System.out.println('The account balance Hashtable:'); System.out.println(' KEY VALUE '); //print the contents of Hashtable while(person_names.hasMoreElements()) { name_str = (String) person_names.nextElement(); System.out.println(' ' + name_str + ' ' + acc_balance.get(name_str)); } System.out.println(); // Update Ben's Account by adding 1000 to it. balance = ((Double)acc_balance.get('Ben')).doubleValue(); acc_balance.put('Ben', new Double(balance + 1000)); //print the contents of updated account System.out.println('Ben's new Account balance: ' + acc_balance.get('Ben')); } }
Ausgabe:
Der Kontostand Hashtable:
SCHLÜSSELWERT
James 78,48
Ben 95,43
Dillon 499,22
Lily 4367.34
Lacy 1200.0
Bens neuer Kontostand: 1095,43
Hashtable Vs Hashmap
Hash-tabelle | HashMap |
---|---|
HashTable wird nur langsam ausgeführt. | HashMap ist schneller. |
Erbt die Wörterbuchklasse. | Erbt die AbstractMap-Klasse. |
Ist eine Legacy-Klasse. | In JDK 1.2 eingeführte HashMap-Klasse |
Synchronisiert und threadsicher. | Nicht synchronisiert und nicht threadsicher. |
Es ist intern synchronisiert und kann nicht rückgängig gemacht werden. | Es kann mit der Collections.synchronizedMap-Methode synchronisiert werden. |
Kein Nullschlüssel / Wert erlaubt. | Ermöglicht Nullschlüssel und mehrere Nullwerte. |
Kann mit Enumerator und Iterator durchlaufen werden. | Kann nur mit Iterator durchquert werden. |
Häufig gestellte Fragen
F # 1) Was ist Hashtable in Java?
Antworten: Es ist eine Legacy-Klasse, die die 'Dictionary' -Klasse erbt und Schlüssel-Wert-Paare speichert.
Q # 2) Warum wird Hashtable verwendet?
Antworten: Es wird zum Speichern von Schlüssel-Wert-Paaren verwendet. Wenn wir also die Schlüssel-Wert-Paare im Tabellenformat speichern müssen, entscheiden wir uns für HashTable. Zweitens können mithilfe von Buckets mehrere Werte für denselben Schlüssel gespeichert werden. Das Abrufen von Daten ist in HashTables effizient.
Q # 3)Wie erstellt man eine Hashtable in Java?
Antworten: Sie können es erstellen, indem Sie ein Objekt der Klasse java.util.HashTable instanziieren.
HashTable hashTable = new HashTable();
Die obige Anweisung erstellt eine HashTable mit dem Namen 'hashTable' mit Schlüsseln und Werten vom Typ 'String'.
Q # 4) Ist Hashtable threadsicher?
Antworten: Ja, es ist threadsicher. Falls keine Thread-Sicherheit erforderlich ist, können wir uns für HashMap entscheiden.
Q # 5) Wie funktioniert Hashtable intern in Java anhand eines Beispiels?
Antworten: Intern werden Schlüssel-Wert-Paare in einer Struktur gespeichert, die als Buckets bezeichnet wird. Die Position des Buckets wird durch den Hashcode des Schlüssels bestimmt. Die Hash-Funktion ermittelt den Bucket-Speicherort mithilfe des Hash-Codes des Schlüssels.
Fazit
HashTable besteht aus Daten, die in Form von Schlüssel-Wert-Paaren gespeichert sind. Die Schlüssel oder Werte dürfen nicht null sein. In Java wird es mit der HashTable-Klasse implementiert.
Wir haben die Konstruktoren und Methoden der HashTable-Klasse zusammen mit der Implementierung von HashTable in der Java-Sprache gesehen.
In unserem nächsten Tutorial werden wir die HashMap-Sammlung diskutieren.
wie man ein Zeichen in einen String c ++ konvertiert
=> Besuchen Sie hier für die exklusive Java Training Tutorial-Reihe.
Literatur-Empfehlungen
- Java Reflection Tutorial mit Beispielen
- Java Scanner Class Tutorial mit Beispielen
- Java-Grundlagen: Java-Syntax, Java-Klasse und Java-Kernkonzepte
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Java SWING Tutorial: Container-, Komponenten- und Ereignisbehandlung
- Java Array Class Tutorial - java.util.Arrays-Klasse mit Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java String enthält () Method Tutorial mit Beispielen