Beide Klassen HashMap und Hashtable implementieren die java.util.map-Schnittstelle, es gibt jedoch Unterschiede in ihren Arbeitsmethoden und ihrer Verwendung. Der folgende Artikel erklärt den Unterschied zwischen HashMap und Hashtable. Ich hoffe, dass er für alle hilfreich ist.
HashMap- und Hashtable-Beispiele in Java
Werfen wir zunächst einen Blick auf HashMap und Hashtable anhand von Beispielen Der Unterschied zwischen Hashtable.
HashMap und Hashtable speichern Schlüssel/Wert-Paare in Hash-Tabellen. Wenn wir eine Hashtable oder HashMap verwenden, geben wir ein Objekt an, das als Schlüssel verwendet werden soll, und den Wert, der mit diesem Schlüssel verknüpft werden soll. Der Schlüssel wird dann gehasht und der resultierende Hash-Code (Hash-Code) wird als Index für den gespeicherten Wert in der Tabelle verwendet.
Java-Code:
import java.util.*; import java.lang.*; import java.io.*; /* 只有当类是公共的时,类的名称才必须是“main” */ class Ideone { public static void main(String args[]) { //----------hashtable ------------------------- Hashtable<Integer,String> ht=new Hashtable<Integer,String>(); ht.put(100,"Amit"); ht.put(104,"Amit"); ht.put(101,"Vijay"); ht.put(102,"Rahul"); System.out.println("-------------Hash table--------------"); for (Map.Entry m:ht.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } //----------------hashmap-------------------------------- HashMap<Integer,String> hm=new HashMap<Integer,String>(); hm.put(100,"Amit"); hm.put(104,"Amit"); // hashmap 允许重复值 hm.put(101,"Vijay"); hm.put(102,"Rahul"); System.out.println("-----------Hash map-----------"); for (Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } } }
Ausgabe:
Zwischen HashMap und Hashtable The Unterschied
1. HashMap ist asynchron und nicht threadsicher. Wenn es keinen korrekten Synchronisationscode gibt, kann es nicht von mehreren Threads gemeinsam genutzt werden, während Hashtable synchron und Thread-sicher ist kann mit vielen Threads geteilt werden.
Hinweis: Wenn keine Thread-Synchronisierung erforderlich ist, ist HashMap normalerweise besser als Hashtable.
2. HashMap erlaubt einen Nullschlüssel und mehrere Nullwerte, während Hashtable keine Nullschlüssel oder -werte zulässt.
3. Hashmap implementiert LinkedInhashmap, um die Einfügereihenfolge beizubehalten, und Treemap sortiert die Zuordnung entsprechend der aufsteigenden Reihenfolge der Schlüssel. Und eine Hashtabelle garantiert keine Reihenfolge; sie verwaltet Zuordnungen nicht in einer bestimmten Reihenfolge.
4. HashMap erbt von der AbstractMap-Klasse und HashTable erbt von der Dictionary-Klasse.
5. Die standardmäßige Anfangskapazität von Hashtable beträgt 11, und bei jeder Erweiterung wird die Kapazität zur ursprünglichen 2n+1. Die standardmäßige Anfangskapazität von HashMap beträgt 16 und bei jeder Erweiterung , die Kapazität wird doppelt so groß wie der ursprüngliche Wert.
6. Die Methoden zur Berechnung von Hash-Werten sind unterschiedlich
7 Der Iterator von HashMap ist ein Fail-Fast-Mechanismus, während der Iterator von Hashtable kein Fail-Fast-Mechanismus ist.
Empfohlene Video-Tutorials: „Java-Tutorial“
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen HashMap und Hashtable in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!