Kombination aus IdentityHashMap und WeakHashMap

8

Ich brauche eine Map Implementierung, die die Eigenschaften von IdentityHashMap und WeakHashMap teilt (Referenzgleichheit statt equals() und schwache Referenzen auf Schlüssel).

Welche Implementierung empfehlen Sie (unter Android muss es funktionieren)?

    
mrpyo 07.04.2014, 10:55
quelle

1 Antwort

2

Wenn Sie Guava vorschlagen, würde new MapMaker().weakKeys().makeMap() den Job direkt ausführen, da weakKeys die Referenzgleichheit für Schlüssel verwendet.

Die Dokumentation von weakKeys sagt:

  

Gibt an, dass jeder in der Map gespeicherte Schlüssel (kein Wert) in eine WeakReference eingebettet werden soll (standardmäßig werden starke Referenzen verwendet).   Warnung: Wenn diese Methode verwendet wird, verwendet die resultierende Karte einen identity (==) -Vergleich, um die Gleichheit der Schlüssel zu ermitteln, was eine technische Verletzung der Map-Spezifikation darstellt und möglicherweise nicht Ihren Erwartungen entspricht.

    
Louis Wasserman 07.04.2014 16:06
quelle