Ich habe einen Blick in die Java HashMap geworfen

Lesen Sie die Java HashMap Quellcode und lesen Sie den Hash Bestätigt, dass der Schlüsselvergleich mit equals () `durchgeführt wird.

    /**
     * Implements Map.get and related methods.
     *
     * @param hash hash for key
     * @param key the key
     * @return the node, or null if none
     */
    final Node<K,V> getNode(int hash, Object key) {
        Node<K,V>[] tab; Node<K,V> first, e; int n; K k;                            //Internes Array
        if ((tab = table) != null && (n = tab.length) > 0 &&
            (first = tab[(n - 1) & hash]) != null) {                                //Vom internen Array(hashCode/Rest der Sequenzlänge)Das zweite gespeicherte Element(Erster Knoten in LinkedList)
            if (first.hash == hash && // always check first node
                ((k = first.key) == key || (key != null && key.equals(k))))
                return first;
            if ((e = first.next) != null) {
                if (first instanceof TreeNode)
                    return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                do {                                                                 //Durchsuchen Sie die verknüpfte Liste nacheinander
                    if (e.hash == hash &&                                            //Wenn der Hashcode anders ist, fahren Sie mit dem nächsten Knoten fort(Optimierungszweck)      
                        ((k = e.key) == key || (key != null && key.equals(k))))      //Hier ist gleich()Vergleichen mit!!!!!!
                        return e;
                } while ((e = e.next) != null);     
            }
        }
        return null;
    } 

Es wurde bestätigt, dass das gesuchte Objekt und das Objekt mit dem Schlüssel jedes Knotens der durchsuchten LinkedList unter Verwendung ihrer jeweiligen Gleichheit () auf Zustimmung verglichen wurden.

Referenz

Recommended Posts

Ich habe einen Blick in die Java HashMap geworfen
Ich habe mir die Ressourcen der Azure Container-Instanz angesehen
Ich möchte den Inhalt der Absicht var_dump
Ich habe es geschafft, ein Leerzeichen zu bekommen, als ich den Inhalt von Beans in den Textbereich gebracht habe
Ich habe ein Sequenzdiagramm des j.u.c.Flow-Beispiels geschrieben
Werfen wir einen Blick auf den Bildschirm von Quant Analyzer!
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich möchte eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe erhalten
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
Warum einen Zeilenumbruch am Ende der Datei einfügen?
Ich habe ein Juwel gemacht, um den Text des Org-Modus in Qiita zu posten
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
[Schienen] Überprüfen Sie den Inhalt des Objekts
Ersetzen Sie den Inhalt der Jar-Datei
Ich habe die Quelle von ArrayList gelesen, die ich gelesen habe
Ich habe die Quelle von Integer gelesen
Ein Memorandum über das FizzBuzz-Problem
Ich habe die Quelle von Long gelesen
Ich habe die Quelle von Short gelesen
Ich habe die Quelle von Byte gelesen
Ich habe die Quelle von String gelesen
[Ruby] Zeigt den Inhalt von Variablen an
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...
Werfen Sie einen Blick darauf, wie Processing 3 funktioniert
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
Überprüfen Sie den Inhalt der Parameter mit pry
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
Ein- und Ausklappen des Inhalts der Recycler-Ansicht
Ich habe die interne Verarbeitung von Retrofit untersucht
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
[Ruby] Schneiden Sie den Inhalt von Twitter-Anzeigen ab
Formatieren Sie den Inhalt von LocalDate mit DateTimeFormatter
Der Inhalt der von CarrierWave gespeicherten Daten.
Finden Sie den Unterschied von einem Vielfachen von 10
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich möchte den Inhalt der Anfrage sehen, ohne vier oder fünf zu sagen
Werfen wir einen Blick auf die Funktionen der Keycloak-Verwaltungskonsole (Administrator Edition).
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
Auch wenn ich den Inhalt eines Datenobjekts in Java in JSON konvertieren möchte, gibt es einen Zirkelverweis ...