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 comune. 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, quindi questa classe si comporta in modo leggermente diverso da altre Map implementazioni.
Sono supportati sia i valori Null che la chiave Null. Questa classe ha 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>.
Come la maggior parte delle classi di raccolta, questa classe non è sincronizzata. Un oggetto sincronizzato può essere costruito WeakHashMap utilizzando 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 ed essere sorpreso che la voce sia stata rimossa. Questa classe funziona perfettamente correttamente 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 WeakHashMap voci le cui chiavi sono state rimosse 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 su un'istanza WeakHashMap e si richiama nessuno dei relativi metodi mutator, è possibile che il size metodo restituisca valori più piccoli nel tempo, affinché il isEmpty metodo restituisca false e quindi true, affinché il containsKey metodo restituisca true e successivamente per una determinata chiave, affinché il false metodo restituisca un valore per una determinata chiave ma successivamente get restituisca null, affinché il put metodo restituisca null 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 la voce impostata per produrre numeri di 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.
<nota>di implementazione forte:</strong> Gli oggetti valore in un WeakHashMap sono contenuti in riferimenti sicuri ordinari. È quindi necessario prestare attenzione a garantire che gli oggetti valore non facciano riferimento in modo forte alle proprie chiavi, direttamente o indirettamente, poiché 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 valore può fare riferimento fortemente a un altro oggetto chiave il cui oggetto valore associato, a sua volta, fa riferimento fortemente 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 iterator metodo delle raccolte restituiti da 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 del proprio remove iteratore, l'iteratore genererà un'eccezione ConcurrentModificationException. Di conseguenza, in presenza di modifiche simultanee, 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 così com'è, in generale, impossibile rendere eventuali garanzie difficili in presenza di modifiche simultanee non sincronizzate. Gli iteratori veloci 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.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Costruttori
| Nome | Descrizione |
|---|---|
| WeakHashMap() |
Costruisce un nuovo oggetto vuoto |
| WeakHashMap(IDictionary) |
Costruisce un nuovo |
| WeakHashMap(Int32, Single) |
Costruisce un nuovo oggetto vuoto |
| WeakHashMap(Int32) |
Costruisce un nuovo oggetto vuoto |
| WeakHashMap(IntPtr, JniHandleOwnership) |
Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniPeerMembers |
Implementazione basata su tabella hash dell'interfaccia |
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (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
| Nome | Descrizione |
|---|---|
| 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() |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Dispose(Boolean) |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| 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 di 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) |
| NewWeakHashMap(Int32) |
Implementazione basata su tabella hash dell'interfaccia |
| Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'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>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| ToString() |
Restituisce una rappresentazione di stringa dell'oggetto . (Ereditato da Object) |
| UnregisterFromRuntime() |
Annulla la registrazione di questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| Values() |
Da aggiungere (Ereditato da AbstractMap) |
| Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
| Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
| Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
Notifica al runtime di interoperabilità che il peer gestito è stato eliminato. (Ereditato da Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Rilascia questo Java peer a meno che non venga conservato da un altro riferimento gestito. (Ereditato da Object) |
| IJavaPeerable.Finalized() |
Notifica al runtime di interoperabilità che il peer gestito è stato finalizzato. (Ereditato da Object) |
| IJavaPeerable.JniManagedPeerState |
Ottiene lo stato che descrive la relazione tra questo peer gestito e il relativo riferimento JNI. (Ereditato da Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Imposta il codice hash dell'identità di interoperabilità per questo Java peer. (Ereditato da Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Imposta lo stato peer gestito e JNI per questo peer Java. (Ereditato da Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Imposta il riferimento all'oggetto JNI usato da questo peer gestito. (Ereditato da Object) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Implementazione basata su tabella hash dell'interfaccia |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |