Suche…


Einführung

Konzepte der schwachen Hashmap

Konzepte von WeakHashmap

Schlüsselpunkte: -

  • Implementierung der Karte.
  • speichert nur schwache Verweise auf seine Schlüssel.

Schwache Referenzen : Die Objekte, auf die nur durch schwache Referenzen verwiesen wird, sind eifrig gesammelte Abfälle. Der GC wartet nicht, bis er in diesem Fall Speicherplatz benötigt.

Unterschied zwischen Hashmap und WeakHashMap: -

Wenn der Java-Speichermanager keinen starken Verweis mehr auf das als Schlüssel angegebene Objekt hat, wird der Eintrag in der Karte in WeakHashMap entfernt.

Beispiel: -

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"));
    }

Größenunterschiede (HashMap vs WeakHashMap):

Beim Aufruf der size () -Methode für das HashMap-Objekt wird dieselbe Anzahl von Schlüsselwertpaaren zurückgegeben. size nimmt nur ab, wenn die remove () - Methode explizit für das HashMap-Objekt aufgerufen wird.

Da der Garbage Collector jederzeit Schlüssel verwerfen kann, verhält sich eine WeakHashMap möglicherweise so, als würde ein unbekannter Thread Einträge unbemerkt entfernen. So ist es möglich, dass die Größenmethode im Laufe der Zeit kleinere Werte zurückgibt. Die Größenreduzierung erfolgt in WeakHashMap automatisch .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow