Detaillierte Erklärung von Java Hashmap, Treemap und LinkedHasMap
Während des Interviews heute Morgen fragte ich nach Java- und Map -verwandten Dingen. Ich erinnerte mich an den Inhalt im Zusammenhang mit Hashmap und Treemap fälschlicherweise. Als ich zurückkam, versuchte ich schnell ein paar Demos, um zu verstehen.
Paketkarte; import Java.util.*; public class hashmaps {public static void main (String [] args) {MAP MAP = new HashMap (); map.put ("a", "aaa"); map.put ("b", "bbb"); map.put ("c", "ccc"); map.put ("d", "ddd"); Iterator iterator = map.keyset (). Iterator (); while (iterator.hasnext ()) {Object key = iterator.next (); System.out.println ("map.get (Schlüssel) ist:" + map.get (Schlüssel)); } Hashtable Tab = new Hashtable (); tab.put ("a", "aaa"); tab.put ("b", "bbb"); tab.put ("c", "ccc"); tab.put ("d", "ddd"); Iterator iterator_1 = tab.keyset (). Iterator (); while (iterator_1.hasnext ()) {Object key = iterator_1.next (); System.out.println ("tab.get (Schlüssel) ist:" + tab.get (Schlüssel)); } Treemap tmp = new Treemap (); tmp.put ("a", "aaa"); tmp.put ("b", "bbb"); tmp.put ("c", "ccc"); tmp.put ("d", "ddd"); tmp.put ("a", "aba"); Iterator iterator_2 = tmp.keyset (). Iterator (); while (iterator_2.hasnext ()) {Object key = iterator_2.next (); System.out.println ("Tmp.get (Schlüssel) ist:" + tmp.get (Schlüssel)); } LinkedHashMap <String, Integer> linkedHashMap = new LinkedHashMap <String, Integer> (); linkedHasMap.put ("Dasdsa", 1); linkedHasMap.put ("gdsf", 2); linkedHasMap.put ("Texvdfd", 3); linkedHasMap.put ("Bdada", 4); linkedHasMap.put ("gdsf", 3); für (String temp: linkedHashMap.keyset ()) {System.out.println (temp); }}} Karte unterscheidet sich von der Liste. Die zugrunde liegende Ebene verwendet die Form von Schlüsselwertpaaren, um Daten zu speichern. Map.Entry ist ein interner Untergang. Unterschiedliche Implementierungen von MAP haben unterschiedliche Indexschemata für Schlüsselwertpaare.
HashMap selbst verwendet die Hash -Funktion, um Schlüsselwerte zu indexieren. Wir können die Reihenfolge der letzten Schlüsselwerte nicht bestimmen.
Es gibt jedoch ein interessantes Phänomen, dass bei der Verwendung von Ganzzahl als Schlüsselwertpaar, wenn die Ziffern 1-Ziffern sind, der Schlüsselwert von klein bis groß angeordnet ist, und wenn die Ziffern auf zwei Ziffern steigen, kann es Probleme geben.
Es gibt einen ausgewogenen Baum in Treemap, um Schlüsselwertindizes zu speichern. Treemap sortiert die Schlüsselwerte nach der Vergleichsfunktion. Ich spekuliere, dass es im Inneren einen Avltree geben kann.
LinkedHasMap verfügt über eine Funktion, dass die Schlüsselwertpaare in der Reihenfolge der Insertion sortiert sind. Wenn es wiederholte Einfügungen gibt, werden sie in der Reihenfolge der ersten Einfügung aufgezeichnet. Eine der Sprüche im Internet ist, dass es zwei Hashs im Struktur gibt.
Einer löst das Auftragsproblem, der andere löst das Speicherproblem, die Richtigkeit ist zu bestätigen
HashMap und Treemap sind die beiden am häufigsten verwendeten Kartenstrukturen. Im Allgemeinen ist HashMap relativ effizient und am häufigsten. Nur wenn wir mit wichtigen Werten bestellt werden müssen, verwenden wir Treemap.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!