Langage

WeakHashMap Classe

Définition

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable
[<Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type WeakHashMap = class
    inherit AbstractMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Héritage
Attributs
Implémente

Remarques

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>. Une entrée dans un WeakHashMap est automatiquement supprimée lorsque sa clé n’est plus en cours d’utilisation ordinaire. Plus précisément, la présence d’un mappage pour une clé donnée n’empêchera pas l’abandon de la clé par le garbage collector, autrement dit finalisable, finalisé, puis récupéré. Lorsqu’une clé a été ignorée, son entrée est effectivement supprimée de la carte, de sorte que cette classe se comporte un peu différemment des autres Map implémentations.

Les valeurs Null et la clé Null sont prises en charge. Cette classe a des caractéristiques de performances similaires à celles de la HashMap classe, et a les mêmes paramètres d’efficacité de<> la capacité< initiale em/em> et <du facteur> de charge em</em>.

Comme la plupart des classes de collection, cette classe n’est pas synchronisée. Une synchronisation WeakHashMap peut être construite à l’aide de la Collections#synchronizedMap Collections.synchronizedMap méthode.

Cette classe est destinée principalement à être utilisée avec des objets clés dont equals les méthodes testent l’identité d’objet à l’aide de l’opérateur == . Une fois qu’une telle clé est ignorée, elle ne peut jamais être recréée. Il est donc impossible d’effectuer une recherche de cette clé dans un WeakHashMap moment ultérieur et d’être surpris que son entrée a été supprimée. Cette classe fonctionne parfaitement avec les objets clés dont equals les méthodes ne sont pas basées sur l’identité d’objet, comme String les instances. Toutefois, avec ces objets clés récréables, la suppression automatique des WeakHashMap entrées dont les clés ont été ignorées peut s’avérer déroutante.

Le comportement de la WeakHashMap classe dépend en partie des actions du garbage collector, de sorte que plusieurs invariants familiers (bien qu’ils ne soient pas obligatoires) Map ne tiennent pas pour cette classe. Étant donné que le garbage collector peut ignorer des clés à tout moment, il WeakHashMap peut se comporter comme si un thread inconnu supprime silencieusement les entrées. En particulier, même si vous synchronisez sur une WeakHashMap instance et que vous n’appelez aucune de ses méthodes de mutateur, il est possible que la size méthode retourne des valeurs plus petites au fil du temps, pour que la isEmpty méthode retourne, puisfalse, pour que la true méthode retourne containsKeytrue et ultérieurement false pour une clé donnée, pour que la get méthode retourne une valeur pour une clé donnée, mais retourne nullultérieurement , pour que la put méthode retourne et la null méthode à retourner removefalse pour une clé qui semblait précédemment être dans la carte, et pour les examens successifs de l’ensemble de clés, la collection de valeurs et l’ensemble d’entrées pour générer successivement un plus petit nombre d’éléments.

Chaque objet clé d’un WeakHashMap objet est stocké indirectement en tant que référence d’une référence faible. Par conséquent, une clé est automatiquement supprimée uniquement après que les références faibles à celle-ci, à l’intérieur et à l’extérieur de la carte, ont été effacées par le garbage collector.

<note d’implémentation forte>:/strong< Les objets de valeur dans un > sont conservés par des référencesWeakHashMap fortes ordinaires. Ainsi, il convient de veiller à ce que les objets de valeur ne font pas fortement référence à leurs propres clés, directement ou indirectement, car cela empêchera l’abandon des clés. Notez qu’un objet value peut faire référence indirectement à sa clé via le WeakHashMap lui-même ; autrement dit, un objet valeur peut fortement faire référence à un autre objet clé dont l’objet valeur associé, à son tour, fait fortement référence à la clé du premier objet valeur. Si les valeurs de la carte ne s’appuient pas sur la carte contenant des références fortes à celles-ci, une façon de traiter cela consiste à encapsuler les valeurs WeakReferences avant d’insérer, comme dans : m.put(key, new WeakReference(value)), puis de décompresser sur chacun d’eux get.

Les itérateurs retournés par la iterator méthode des collections retournées par toutes les « méthodes de vue de collection » de cette classe échouent : si la carte est modifiée structurellement à tout moment après la création de l’itérateur, à tout moment, à l’exception de la méthode de remove l’itérateur, l’itérateur lève un ConcurrentModificationException. Par conséquent, face à la modification simultanée, l’itérateur échoue rapidement et correctement, plutôt que de risquer un comportement arbitraire et non déterministe à un moment indéterminé à l’avenir.

Notez que le comportement de défaillance rapide d’un itérateur ne peut pas être garanti, en général, impossible d’apporter des garanties difficiles en présence d’une modification simultanée non synchronisée. Les itérateurs à vitesse d’échec lèvent ConcurrentModificationException un meilleur effort. Par conséquent, il serait incorrect d’écrire un programme qui dépendait de cette exception pour son exactitude : le comportement d’itérateur à échec doit être utilisé uniquement pour détecter les bogues.

Cette classe est membre de l’infrastructure de collections Java.

Ajouté dans la version 1.2.

Java documentation pour java.util.WeakHashMap.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Constructeurs

Nom Description
WeakHashMap()

Construit un nouveau, vide WeakHashMap avec la capacité initiale par défaut (16) et le facteur de charge (0).

WeakHashMap(IDictionary)

Construit un nouveau WeakHashMap avec les mêmes mappages que la carte spécifiée.

WeakHashMap(Int32, Single)

Construit un nouveau, vide WeakHashMap avec la capacité initiale donnée et le facteur de charge donné.

WeakHashMap(Int32)

Construit un nouveau, vide WeakHashMap avec la capacité initiale donnée et le facteur de charge par défaut (0.

WeakHashMap(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Propriétés

Nom Description
Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
IsEmpty

À ajouter

(Hérité de AbstractMap)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
JniPeerMembers

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

Nom Description
Clear()

À ajouter

(Hérité de AbstractMap)
Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
ContainsKey(Object)

À ajouter

(Hérité de AbstractMap)
ContainsValue(Object)

À ajouter

(Hérité de AbstractMap)
Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
EntrySet()

Retourne une Set vue des mappages contenus dans cette carte.

Equals(Object)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
ForEach(IBiConsumer)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

Get(Object)

À ajouter

(Hérité de AbstractMap)
GetHashCode()

Retourne une valeur de code de hachage pour l’objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
KeySet()

À ajouter

(Hérité de AbstractMap)
NewWeakHashMap(Int32)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
Put(Object, Object)

À ajouter

(Hérité de AbstractMap)
PutAll(IDictionary)

À ajouter

(Hérité de AbstractMap)
Remove(Object)

À ajouter

(Hérité de AbstractMap)
ReplaceAll(IBiFunction)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
Size()

À ajouter

(Hérité de AbstractMap)
ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation sous forme de chaîne de l’objet.

(Hérité de Object)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Values()

À ajouter

(Hérité de AbstractMap)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

(Hérité de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Implémentation basée sur une table de hachage de l’interfaceMap, avec <>des clés</em faibles em>.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à