Zoeken…


Invoering

Concepten van zwakke Hashmap

Concepten van WeakHashmap

Hoofdpunten: -

  • Implementatie van kaart.
  • slaat alleen zwakke verwijzingen naar de toetsen op.

Zwakke referenties : de objecten waarnaar alleen door zwakke referenties wordt verwezen, worden gretig verzameld; in dat geval wacht de GC niet tot hij geheugen nodig heeft.

Verschil tussen Hashmap en WeakHashMap: -

Als de Java-geheugenbeheerder niet langer een sterke verwijzing heeft naar het object dat als sleutel is opgegeven, wordt het item op de kaart verwijderd in WeakHashMap.

Voorbeeld: -

public class WeakHashMapTest {
    public static void main(String[] args) {
        Map hashMap= new HashMap();
        
        Map weakHashMap = new WeakHashMap();
        
        String keyHashMap = new String("keyHashMap");
        String keyWeakHashMap = new String("keyWeakHashMap");
        
        hashMap.put(keyHashMap, "Ankita");
        weakHashMap.put(keyWeakHashMap, "Atul");
        System.gc();
        System.out.println("Before: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
        
        keyHashMap = null;
        keyWeakHashMap = null;
        
        System.gc();  
        
        System.out.println("After: hash map value:"+hashMap.get("keyHashMap")+" and weak hash map value:"+weakHashMap.get("keyWeakHashMap"));
    }

Grootteverschillen (HashMap versus WeakHashMap):

Het aanroepen van de methode size () op het HashMap-object retourneert hetzelfde aantal sleutel / waarde-paren. de grootte wordt alleen kleiner als de methode remove () expliciet wordt aangeroepen voor het HashMap-object.

Omdat de vuilnisman op elk moment sleutels kan weggooien, kan een WeakHashMap zich gedragen alsof een onbekende thread geruisloos items verwijdert. Het is dus mogelijk dat de groottemethode in de loop van de tijd kleinere waarden retourneert. In WeakHashMap gebeurt de verkleining automatisch .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow