Was genau ist der Eimer in der hashmap?
Vor kurzem in einem interview wurde ich gefragt, was genau ist ein Eimer in die hashmap? Ob es ein array oder eine arraylist oder was?
Ich war verwirrt. Ich weiß, hashmaps werden unterstützt von arrays. So kann ich sagen, der Eimer ist ein array mit einer Kapazität von 16 in der starten Sie die Speicherung von hashcodes und die verknüpften Listen haben Ihren start-pointer ?
Ich weiß, wie ich eine hashmap intern funktioniert, wollte nur wissen, was genau ist ein Eimer, in Bezug auf die Daten-Strukturen.
Sie müssen Lesen Sie diese (stackoverflow.com/questions/6493605/...)
Ich speziell wollte wissen, was ein Eimer ist? In der Frage erwähnt, es ist mehr Arbeit an den hashcodes und hashmap-Implementierung. Also ich denke nicht, dass meine Frage ein Duplikat zu sein. Die Frage könnte ähnlich sein, aber die Antwort, die Sie suchen, sind unterschiedlich.
Ich speziell wollte wissen, was ein Eimer ist? In der Frage erwähnt, es ist mehr Arbeit an den hashcodes und hashmap-Implementierung. Also ich denke nicht, dass meine Frage ein Duplikat zu sein. Die Frage könnte ähnlich sein, aber die Antwort, die Sie suchen, sind unterschiedlich.
InformationsquelleAutor dgupta3091 | 2016-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, ein Eimer wird jedes element im array auf die Sie sich beziehen. In früheren Java-Versionen, jeder Eimer enthielt eine verknüpfte Liste von Map-Einträge. In neuen Java-Versionen, jeder Eimer enthält entweder eine Struktur der Einträge oder eine verkettete Liste von Einträgen.
Aus der implementation notes in Java 8:
ja, aber in Java 8 Umsetzung das array erstellt wird verzögert (d.h. erst wenn der erste Eintrag in der HashMap).
Ich habe gerade überprüft die Umsetzung in Java 8, und keine der Konstruktoren initialisieren das array. Es ist nur initialisiert
resize()
(wird aufgerufen durchput
wenn das array null ist) undreadObject(java.io.ObjectInputStream s)
(Deserialisierung).Das macht Sinn, ich vergaß den wichtigsten Grund, eine erste Kapazität ist die Minimierung der Anzahl der rehash-Operationen. Ich denke, es ist merkwürdig, zu erstellen, die das array träge, zum Beispiel - Sie erstellen eine hashmap mit einem ziemlich großen anfänglichen Kapazität in eine Methode zum laden, denke es wird einige Zeit dauern. Dann später auf der Straße finden Sie heraus, dass der erste Aufruf zu setzen dauert länger als das laden der Funktion. Vielleicht ist meine Logik ausgeschaltet ist, ich bin ziemlich müde. Danke für Ihre Antwort auf meinen Kommentar obwohl.
InformationsquelleAutor Eran
Ich hoffe das kann Ihnen helfen, zu verstehen, die Implementierung hash map gut.
InformationsquelleAutor Arun
Eimer genau ist ein array von Knoten. So bucket ist eine Instanz der Klasse java.util.HashMap.Knoten. Jedem Knoten ist eine Datenstruktur, die ähnlich wie LinkedList, oder kann auch wie eine TreeMap (seit Java 8), HashMap entscheidet selbst, was besser für die performance--halten Sie die Eimer wie LinkedList oder TreeMap. TreeMap wird nur gewählt, im Falle von schlecht entworfen, hashCode () - Funktion, wenn viele der Einträge werden in Einzel-Eimer.
Sehen Sie, wie die Eimer Aussehen in HashMap:
InformationsquelleAutor stinger
Eimer sind im Grunde eine Daten-Struktur, die verwendet wird, die in der Paging-Algorithmus des Betriebssystems . In einem sehr Amateur Sprache.
Die Objekte für einen bestimmten hashcode gespeichert wird, in diesem Eimer.(grundsätzlich kann man die header der verlinkten Liste Datenstruktur werden die hashcode-Wert vertreten ist, im Hinblick auf Eimer)
Den Referenzen des Objekts gespeichert wird, in die link-Liste , deren header repräsentiert den Wert der Hashcode.
Der JVM erzeugt und von der Größe, hängt vom Speicherbedarf der JVM.
InformationsquelleAutor Piyush Desai