"Thinking in Java" 4e édition p519 Page Faiblehashmap Chapitre Notes de lecture
LowerHashMap est utilisé pour sauver la référence faible, une structure appelée Yunxun Garbage Collector nettoie automatiquement les clés et les valeurs.
Lors de l'ajout de clés et de valeurs, le mappage les enveloppera automatiquement avec des références faibles.
Voir le code source JDK,
public v put (k key, v valeur) {objet k = maskNull (key); int h = hash (k); entrée <k, v> [] tab = getTable (); int i = indexfor (h, tab.length); for (entrée <k, v> e = tab [i]; e! = null; e = e.nex OldValue = E.Value; if (Value! = OldValue) e.Value = Value; return OldValue;}} modCount ++; Entry <k, v> e = tab [i]; tab [i] = new Entry <> (k, valeur, filey, h, e); if (++ size> = threshold) résirait (tab.Legth * 2); return null;} La new Entry<>(k, value, queue, h, e) utilise ReferenceQueue
/ ** * Référence Fitre pour les faibles de bases effacés * / Private Final Referenceeue <objet> file d'attente = new ReferenceQueue <> ();
Cliquez sur le constructeur de new Entry , entrez le niveau supérieur de Super pour voir.
/ ** * Crée une nouvelle référence faible qui fait référence à l'objet donné et est * enregistré avec la file d'attente donnée. * * @param Objet de référence La nouvelle référence faible se réfère à * @param Q la file d'attente avec laquelle la référence doit être enregistrée, * ou <TT> NULL </TT> si l'enregistrement n'est pas requis * / Public FaibleReference (t référence, référence <? Super T> Q) {Super (référent, q); } Ici, new Entry construit également un objet faible
test:
Package com.anialy.test.data_structure.map; import java.util.iterator; import java.util.weakhashmap; public class webowhashmapstest {public static void main (string [] args) {webilhashmap wmap = new faiblehashmap <string, objet> (); final size = 10; string [] string = pour (pour (intring i = 0; i <size; i ++) {string key = Integer.toString (i); string valu wmap.KeySet (). Iterator (); while (iter.hasnext ()) {System.out.println (wmap.get (iter.next ()));}}}On peut s'attendre à ce que, en partie, puisque String [] conserve des références faibles, les sorties sont toutes intervalles 3.
Ce qui précède est tout le contenu de cet article sur l'analyse de l'instance FaibleHashMap de la programmation Java, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!