WeakHashMap Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Implementazione basata su tabella hash dell'interfacciaMap
, con <>chiavi< deboli em/em>.
[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable
[<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
- Ereditarietà
- Attributi
- Implementazioni
Commenti
Implementazione basata su tabella hash dell'interfacciaMap
, con <>chiavi< deboli em/em>. Una voce in un WeakHashMap
verrà rimossa automaticamente quando la relativa chiave non è più in uso normale. Più precisamente, la presenza di un mapping per una determinata chiave non impedisce che la chiave venga eliminata dal Garbage Collector, ovvero resa finalizzabile, finalizzata e quindi recuperata. Quando una chiave è stata rimossa, la voce viene effettivamente rimossa dalla mappa, pertanto questa classe si comporta in modo leggermente diverso da altre Map
implementazioni.
Sono supportati sia i valori Null che la chiave Null. Questa classe presenta caratteristiche di prestazioni simili a quelle della HashMap
classe e ha gli stessi parametri di efficienza di <em>initial capacity</em e <em>> load factor</em>.
Analogamente alla maggior parte delle classi di raccolta, questa classe non è sincronizzata. Un oggetto sincronizzato può essere costruito WeakHashMap
usando il Collections#synchronizedMap Collections.synchronizedMap
metodo .
Questa classe è destinata principalmente all'uso con oggetti chiave i cui equals
metodi testano l'identità dell'oggetto usando l'operatore ==
. Una volta che tale chiave viene rimossa, non può mai essere ricreata, quindi è impossibile eseguire una ricerca di tale chiave in un WeakHashMap
secondo momento e essere sorpreso che la voce sia stata rimossa. Questa classe funziona perfettamente con gli oggetti chiave i cui equals
metodi non sono basati sull'identità dell'oggetto, ad esempio String
le istanze. Con tali oggetti chiave ricreabili, tuttavia, la rimozione automatica delle voci le WeakHashMap
cui chiavi sono state eliminate può risultare confusa.
Il comportamento della WeakHashMap
classe dipende in parte dalle azioni del Garbage Collector, quindi diverse invarianti familiari (anche se non necessarie) Map
non contengono per questa classe. Poiché il Garbage Collector può eliminare le chiavi in qualsiasi momento, un WeakHashMap
può comportarsi come se un thread sconosciuto rimuove automaticamente le voci. In particolare, anche se si esegue la sincronizzazione in un'istanza WeakHashMap
e non si richiama alcun metodo mutatore, è possibile che il size
metodo restituisca valori più piccoli nel tempo, affinché il metodo restituisca false
e quindi true
, affinché il isEmpty
containsKey
metodo restituisca true
e successivamente per una determinata chiave, affinché il get
metodo restituisca un valore per una determinata chiave ma in seguito false
restituisca null
, per restituire il put
metodo e il remove
metodo da restituire false
per una chiave che in precedenza sembrava trovarsi nella mappa e per gli esami successivi del set di chiavi, la raccolta di valori e l'insieme di voci per produrre numeri di null
elementi più piccoli.
Ogni oggetto chiave in un WeakHashMap
oggetto viene archiviato indirettamente come referenziale di un riferimento debole. Pertanto, una chiave verrà rimossa automaticamente solo dopo i riferimenti deboli, sia all'interno che all'esterno della mappa, sono stati cancellati dal Garbage Collector.
<strong>Implementation note:</strong> Gli oggetti valore in un sono WeakHashMap
mantenuti da riferimenti sicuri ordinari. È quindi necessario prestare attenzione a garantire che gli oggetti valore non facciano fortemente riferimento alle proprie chiavi, direttamente o indirettamente, in quanto ciò impedirà l'eliminazione delle chiavi. Si noti che un oggetto valore può fare riferimento indirettamente alla relativa chiave tramite se WeakHashMap
stesso, ovvero un oggetto value può fare riferimento ad un altro oggetto chiave il cui oggetto valore associato, a sua volta, fa fortemente riferimento alla chiave del primo oggetto valore. Se i valori nella mappa non si basano sulla mappa che contiene riferimenti sicuri, un modo per gestirli consiste nell'eseguire il wrapping dei valori stessi all'interno WeakReferences
di prima di inserire, come in: m.put(key, new WeakReference(value))
e quindi annullare il wrapping su ogni get
oggetto .
Gli iteratori restituiti dal metodo delle raccolte restituiti da iterator
tutti i "metodi di visualizzazione raccolta" di questa classe sono rapidi: se la mappa viene modificata strutturalmente in qualsiasi momento dopo la creazione dell'iteratore, in qualsiasi modo tranne tramite il metodo proprietario remove
dell'iteratore, l'iteratore genererà un'eccezione ConcurrentModificationException
. Di conseguenza, in caso di modifica simultanea, l'iteratore ha esito negativo rapidamente e pulito, anziché rischiare un comportamento arbitrario non deterministico in un momento indeterminato in futuro.
Si noti che il comportamento rapido di errore di un iteratore non può essere garantito perché, in generale, impossibile fare alcuna garanzia rigida in presenza di modifiche simultanee non sincronizzate. Gli iteratori rapidi a errori generano ConcurrentModificationException
un'operazione ottimale. Pertanto, sarebbe sbagliato scrivere un programma che dipende da questa eccezione per la correttezza: il comportamento rapido degli iteratori deve essere usato solo per rilevare i bug.
Questa classe è un membro di Java Collections Framework.
Aggiunta nella versione 1.2.
Documentazione java per java.util.WeakHashMap
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal Android e usato in base ai termini descritti in 2.5 Attribution License Creative Commons 2.5 Attribution License.
Costruttori
WeakHashMap() |
Costruisce un nuovo oggetto vuoto |
WeakHashMap(IDictionary) |
Costruisce un nuovo |
WeakHashMap(Int32) |
Costruisce un nuovo oggetto vuoto |
WeakHashMap(Int32, Single) |
Costruisce un nuovo oggetto vuoto |
WeakHashMap(IntPtr, JniHandleOwnership) |
Costruttore utilizzato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
Proprietà
Class |
Restituisce la classe di runtime di questo |
Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
IsEmpty |
Da aggiungere (Ereditato da AbstractMap) |
JniIdentityHashCode |
Implementazione basata su tabella hash dell'interfaccia |
JniPeerMembers |
Implementazione basata su tabella hash dell'interfaccia |
PeerReference |
Implementazione basata su tabella hash dell'interfaccia |
ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
Metodi
Clear() |
Da aggiungere (Ereditato da AbstractMap) |
Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
ContainsKey(Object) |
Da aggiungere (Ereditato da AbstractMap) |
ContainsValue(Object) |
Da aggiungere (Ereditato da AbstractMap) |
Dispose() |
Implementazione basata su tabella hash dell'interfaccia |
Dispose(Boolean) |
Implementazione basata su tabella hash dell'interfaccia |
EntrySet() |
Restituisce una |
Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
ForEach(IBiConsumer) |
Implementazione basata su tabella hash dell'interfaccia |
Get(Object) |
Da aggiungere (Ereditato da AbstractMap) |
GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
KeySet() |
Da aggiungere (Ereditato da AbstractMap) |
Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitoraggio di questo oggetto. (Ereditato da Object) |
Put(Object, Object) |
Da aggiungere (Ereditato da AbstractMap) |
PutAll(IDictionary) |
Da aggiungere (Ereditato da AbstractMap) |
Remove(Object) |
Da aggiungere (Ereditato da AbstractMap) |
ReplaceAll(IBiFunction) |
Implementazione basata su tabella hash dell'interfaccia |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
Size() |
Da aggiungere (Ereditato da AbstractMap) |
ToArray<T>() |
Implementazione basata su tabella hash dell'interfaccia |
ToString() |
Restituisce una rappresentazione in formato stringa dell'oggetto. (Ereditato da Object) |
UnregisterFromRuntime() |
Implementazione basata su tabella hash dell'interfaccia |
Values() |
Da aggiungere (Ereditato da AbstractMap) |
Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IJavaPeerable.Disposed() |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.DisposeUnlessReferenced() |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.Finalized() |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.JniManagedPeerState |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Implementazione basata su tabella hash dell'interfaccia |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Implementazione basata su tabella hash dell'interfaccia |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo verificato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Implementazione basata su tabella hash dell'interfaccia |
GetJniTypeName(IJavaPeerable) |
Implementazione basata su tabella hash dell'interfaccia |