Condividi tramite


WeakHashMap Classe

Definizione

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à
WeakHashMap
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 isEmptycontainsKey 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 getoggetto .

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 con la capacità iniziale predefinita (16) e il fattore di carico (0).

WeakHashMap(IDictionary)

Costruisce un nuovo WeakHashMap oggetto con gli stessi mapping della mappa specificata.

WeakHashMap(Int32)

Costruisce un nuovo oggetto vuoto WeakHashMap con la capacità iniziale specificata e il fattore di carico predefinito (0.

WeakHashMap(Int32, Single)

Costruisce un nuovo oggetto vuoto WeakHashMap con la capacità iniziale specificata e il fattore di carico specificato.

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 Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
IsEmpty

Da aggiungere

(Ereditato da AbstractMap)
JniIdentityHashCode

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
JniPeerMembers

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

PeerReference

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
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'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
Dispose(Boolean)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
EntrySet()

Restituisce una Set visualizzazione dei mapping contenuti in questa mappa.

Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
ForEach(IBiConsumer)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

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'interfacciaMap, con <>chiavi< deboli em/em>.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
Size()

Da aggiungere

(Ereditato da AbstractMap)
ToArray<T>()

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
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'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.Finalized()

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo verificato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

GetJniTypeName(IJavaPeerable)

Implementazione basata su tabella hash dell'interfacciaMap, con <>chiavi< deboli em/em>.

Si applica a