Histoire super détaillée: hashtap source analysis, you understand the charm of source, Java Data Baidu Network disk

Reste debout toute la nuit. 2021-08-20 00:02:37 阅读数:549

histoire super taill hashtap source

Il y a toujours un problème à lire le code source qui est très confusHashMapA héritéAbstractMapEtAbstractMapClasse implémentéeMapInterface,Alors pourquoi?HashMapEt en cours de réalisationMapEt l'interface?Encore une fois,ArrayListMoyenneLinkedListC'est ce genre de structure.

Selon java Fondateur du cadre collectifJosh BlochDescription,Une telle écriture est une erreur.InjavaDans le cadre de la collection,Il y a beaucoup d'écriture comme ça,Commencez par écrirejavaQuand vous assemblez le cadre,Il pense que ça dit,Ça peut être utile dans certains endroits,Jusqu'à ce qu'il réalise qu'il a tort.C'est évident.,JDKLe gardien de,Plus tard, on ne pensait pas que cette petite erreur méritait d'être corrigée,C'est comme ça qu'il existe.

  • Cloneable Interface vide,Indique que vous pouvez cloner
  • Serializable Sérialisation
  • AbstractMap OffreMapInterface d'implémentation

3.Propriétés

Capacité d'initialisation(Ça doit être deuxnPuissance secondaire)

Capacité maximale de l'ensemble ( Doit être une puissance de deux )

Facteur de charge,Par défaut0.75

Lorsque la valeur de la liste liée dépasse 8 Il va tourner en rouge et noir. (1.8Nouveau)

Lorsque la valeur de la liste liée est inférieure à 6 Renvoie la liste des liens de l'arbre Rouge et noir

QuandMap Lorsque la quantité à l'intérieur dépasse cette valeur , Les seaux du tableau peuvent être tressés , Sinon, il y a trop d'éléments dans le seau qui s'étendent , Au lieu d'être arborescente Pour éviter l'expansion 、 Conflits de sélection arborescente , Cette valeur ne peut être inférieure à 4 * TREEIFY_THRESHOLD

tableUtilisé pour initialiser(Ça doit être deuxnPuissance secondaire)

Utilisé pour stocker le cache

HashMap Quantité stockée dans

Pour enregistrer HashMap Nombre de modifications

La valeur utilisée pour redimensionner la capacité suivante est calculée comme suit: (Capacité*Facteur de charge)

Facteur de charge de la table de hachage

Attributs clés

  • tableInJDK1.8 Nous avons appris HashMap Est une structure composée d'un tableau, d'une liste liée et d'un arbre Rouge et noir. tableC'estHashMapTableau dans
  • sizePourHashMapMoyenneK-V Nombre en temps réel de
  • loadFactorFacteur de charge, Est utilisé pour mesurer HashMap Degré de satisfaction ,CalculHashMap La méthode du facteur de charge en temps réel pour :size/capacity, Au lieu d'occuper le nombre de barils enlevés pour capacity.capacity Est le nombre de barils ,C'est - à - dire table Longueurlength.
  • thresholdFormule de calcul:capacity * loadFactor. Cette valeur est la longueur maximale du tableau actuellement occupé . Après ça, on recommence. resize(Expansion de la capacité),Après expansion HashMap Deux fois la capacité précédente

4.Méthode de construction

Commencez à regarder la méthode de construction .

4.1 HashMap()

Construire un vide HashMap , Capacité initiale par défaut (16) Et le facteur de charge par défaut (0.75).

4.2 HashMap(int initialCapacity)

Construire un vide HashMap A la capacité initiale spécifiée et le facteur de charge par défaut (0.75).

4.3 HashMap(int initialCapacity, float loadFactor)

Construire un vide HashMap A la capacité initiale spécifiée et le facteur de charge . Analysons - le. .

Enfin appelétableSizeFor, Regardez la mise en œuvre de la méthode :

5.Ajouter

Maintenant, commençons à analyser put()Méthodes

Nous pouvons voirputAppeléputVal Pour insérer des données , Mais Notez que key J'ai fait ça ici. hash()Méthodes,Regarde ça.Hash Comment la méthode est - elle mise en œuvre? .

Résumé

Cet article va de la base au niveau avancé au combat réel,De peu en profondeur,Prends ça.MySQLC'est très clair.,C'est clair.,C'est ce que j'ai vu de mieux jusqu'à présent.MySQLNotes d'étude,Je crois que si vous lisez attentivement cette note,,Qu'il s'agisse d'un problème au travail ou d'une question posée par un intervieweur, il est facile de le résoudre.!

Quelque chose d'important.:Besoin d'une version complèteMySQLPour apprendre les notes,Veuillez transmettre+Après l'attention Cliquez ici pour obtenir gratuitementTéléchargement gratuit!

MySQL50Tri des questions d'entrevue à haute fréquence:

Copyright:Cet article est[Reste debout toute la nuit.]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210820000203927S.html