J'ai jeté un coup d'œil à l'intérieur du Java HashMap

Lisez le Java HashMap code source et lisez hash Confirmé que la comparaison clé est effectuée avec equals () .

    /**
     * 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;                            //Réseau interne
        if ((tab = table) != null && (n = tab.length) > 0 &&
            (first = tab[(n - 1) & hash]) != null) {                                //De la baie interne(hashCode/Reste de la longueur de la séquence)Le deuxième élément stocké(Premier nœud dans 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 {                                                                 //Recherchez la liste liée une par une
                    if (e.hash == hash &&                                            //Si le hashCode est différent, passez au nœud suivant(objectif d'optimisation)      
                        ((k = e.key) == key || (key != null && key.equals(k))))      //Ici égale()Comparer avec!!!!!!
                        return e;
                } while ((e = e.next) != null);     
            }
        }
        return null;
    } 

Il a été confirmé que l'objet recherché et l'objet avec la clé de chaque nœud de la LinkedList recherché ont été comparés pour obtenir le consentement en utilisant leurs égaux respectifs ().

référence

Recommended Posts

J'ai jeté un coup d'œil à l'intérieur du Java HashMap
J'ai jeté un coup d'œil aux ressources d'Azure Container Instance
Je veux var_dump le contenu de l'intention
J'ai réussi à obtenir un blanc lorsque j'ai apporté le contenu de Beans dans la zone de texte
J'ai écrit un diagramme de séquence de l'exemple j.u.c.Flow
Jetons un coup d'œil à l'écran de Quant Analyzer!
J'ai essayé JAX-RS et pris note de la procédure
Je veux obtenir une liste du contenu d'un fichier zip et sa taille non compressée
[Ruby] Comment récupérer le contenu du double hachage
Pourquoi insérer un saut de ligne à la fin du fichier
J'ai fait un petit bijou pour poster le texte du mode org sur qiita
J'ai créé un outil pour afficher la différence du fichier CSV
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
[Rails] Vérifiez le contenu de l'objet
Remplacez le contenu du fichier Jar
J'ai lu la source de ArrayList que j'ai lu
J'ai lu la source d'Integer
Un mémorandum du problème FizzBuzz
J'ai lu la source de Long
J'ai lu la source de Short
J'ai lu la source de Byte
J'ai lu la source de String
[Ruby] Afficher le contenu des variables
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
Jetez un œil au fonctionnement de Processing 3
Vérifiez le contenu du magasin de certificats Java
Vérifiez le contenu des paramètres avec le levier
Mémo: [Java] Vérifiez le contenu du répertoire
Pliage et dépliage du contenu de la vue Recycleur
J'ai étudié le traitement interne de Retrofit
[jour: 5] J'ai résumé les bases de Java
[Ruby] Coupez le contenu des publicités Twitter
Mettre en forme le contenu de LocalDate avec DateTimeFormatter
Le contenu des données enregistrées par CarrierWave.
Trouvez la différence à partir d'un multiple de 10
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
Je veux voir le contenu de Request sans dire quatre ou cinq
Jetons un coup d'œil aux fonctions de la console de gestion Keycloak (édition administrateur)
Je veux obtenir récursivement la superclasse et l'interface d'une certaine classe
Même si je souhaite convertir le contenu d'un objet de données en JSON en Java, il existe une référence circulaire ...