Buscar..


Introducción

Conceptos de Hashmap débil

Conceptos de HashHashmap

Puntos clave:-

  • Implementación del Mapa.
  • Solo almacena referencias débiles a sus claves.

Referencias débiles : los objetos a los que solo se hace referencia por referencias débiles se recolectan con entusiasmo; El GC no esperará hasta que necesite memoria en ese caso.

Diferencia entre Hashmap y WeakHashMap: -

Si el administrador de memoria Java ya no tiene una referencia segura al objeto especificado como clave, entonces la entrada en el mapa se eliminará en WeakHashMap.

Ejemplo: -

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

Diferencias de tamaño (HashMap vs WeakHashMap):

El método de tamaño de llamada () en el objeto HashMap devolverá el mismo número de pares clave-valor. el tamaño disminuirá solo si el método remove () se llama explícitamente en el objeto HashMap.

Debido a que el recolector de basura puede descartar claves en cualquier momento, un WeakHashMap puede comportarse como si un hilo desconocido estuviera eliminando entradas silenciosamente. Por lo tanto, es posible que el método de tamaño devuelva valores más pequeños a lo largo del tiempo. Por lo tanto, en WeakHashMap, la reducción de tamaño ocurre automáticamente .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow