Share via


HashMap Classe

Definizione

Implementazione basata sulla tabella hash dell'interfaccia Map .

[Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class HashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type HashMap = class
    inherit AbstractMap
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
Ereditarietà
Derivato
Attributi
Implementazioni

Commenti

Implementazione basata sulla tabella hash dell'interfaccia Map . Questa implementazione fornisce tutte le operazioni di mappa facoltative e consente null valori e chiave null . La HashMap classe è approssimativamente equivalente a Hashtable, ad eccezione del fatto che non è asincronizzata e consente nulls. Questa classe non garantisce l'ordine della mappa; in particolare, non garantisce che l'ordine rimanga costante nel tempo.

Questa implementazione fornisce prestazioni in tempo costante per le operazioni di base (get e put), presupponendo che la funzione hash disperi gli elementi correttamente tra i bucket. L'iterazione sulle visualizzazioni della raccolta richiede tempo proporzionale alla "capacità" dell'istanza HashMap (il numero di bucket) più le dimensioni (il numero di mapping chiave-valore). Pertanto, è molto importante non impostare la capacità iniziale troppo elevata (o il fattore di carico troppo basso) se le prestazioni di iterazione sono importanti.

Un'istanza di ha due parametri che influiscono sulle prestazioni: capacità iniziale e fattore diHashMap carico. La capacità è il numero di bucket nella tabella hash e la capacità iniziale è semplicemente la capacità al momento della creazione della tabella hash. Il fattore di carico è una misura della modalità di aumento automatico della tabella hash della tabella hash. Quando il numero di voci nella tabella hash supera il prodotto del fattore di carico e la capacità corrente, la tabella hash viene ricompilata (ovvero le strutture dati interne vengono ricompilate) in modo che la tabella hash abbia circa due volte il numero di bucket.

Come regola generale, il fattore di carico predefinito (.75) offre un buon compromesso tra i costi di tempo e spazio. I valori più elevati riducono il sovraccarico dello spazio, ma aumentano il costo di ricerca (riflessa nella maggior parte delle operazioni della HashMap classe, inclusa get e put). Il numero previsto di voci nella mappa e il relativo fattore di carico devono essere presi in considerazione quando si imposta la capacità iniziale, in modo da ridurre al minimo il numero di operazioni rehash. Se la capacità iniziale è maggiore del numero massimo di voci suddivise dal fattore di carico, non verranno mai eseguite operazioni rehash.

Se molti mapping devono essere archiviati in un'istanza HashMap , la creazione con una capacità sufficientemente grande consentirà di archiviare i mapping in modo più efficiente rispetto a consentire di eseguire il ripristino automatico in base alle esigenze per aumentare la tabella. Si noti che l'uso di molte chiavi con lo stesso hashCode() è un modo sicuro per rallentare le prestazioni di qualsiasi tabella hash. Per migliorare l'impatto, quando le chiavi sono Comparable, questa classe può usare l'ordine di confronto tra le chiavi per interrompere le relazioni.

<Nota forte>che questa implementazione non è sincronizzata.</strong> Se più thread accedono a una mappa hash simultaneamente e almeno uno dei thread modifica la mappa in modo strutturale, deve essere sincronizzato esternamente. Una modifica strutturale è un'operazione che aggiunge o elimina uno o più mapping, modificando semplicemente il valore associato a una chiave che un'istanza già contiene non è una modifica strutturale. Questa operazione viene in genere eseguita sincronizzando su un oggetto che incapsula naturalmente la mappa.

Se non esiste alcun oggetto di questo tipo, la mappa deve essere "wrapped" usando il Collections#synchronizedMap Collections.synchronizedMap metodo . Questa operazione viene eseguita al momento della creazione, per evitare l'accesso accidentale non sincronizzato alla mappa:

Map m = Collections.synchronizedMap(new HashMap(...));

Gli iteratori restituiti da tutti i metodi di visualizzazione della classe sono rapidi: se la mappa viene modificata in modo strutturale in qualsiasi momento dopo la creazione dell'iteratore, in qualsiasi modo tranne tramite il metodo proprietario remove dell'iteratore, l'iteratore genererà un ConcurrentModificationExceptionoggetto . Pertanto, a fronte di modifiche simultanee, l'iteratore ha esito negativo rapidamente e pulito, anziché rischiare un comportamento arbitrario e non deterministico in un momento indeterminato in futuro.

Si noti che il comportamento non riuscito di un iteratore non può essere garantito perché è, in genere, impossibile rendere eventuali garanzie difficili in presenza di modifiche simultanee non sincronizzate. Gli iteratori veloci non riescono generano ConcurrentModificationException un'attività ottimale. Pertanto, sarebbe sbagliato scrivere un programma che dipende da questa eccezione per la sua correttezza: il comportamento non rapido degli iteratori deve essere usato solo per rilevare i bug.

Questa classe è un membro di Java Collections Framework.

Aggiunto nella versione 1.2.

Documentazione Java per java.util.HashMap.

Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .

Costruttori

HashMap()

Costruisce un vuoto HashMap con la capacità iniziale predefinita (16) e il fattore di carico predefinito (0).

HashMap(IDictionary)

Costruisce un nuovo HashMap oggetto con gli stessi mapping dell'oggetto specificato Map.

HashMap(Int32)

Costruisce un vuoto HashMap con la capacità iniziale specificata e il fattore di carico predefinito (0).

HashMap(Int32, Single)

Costruisce un vuoto HashMap con la capacità iniziale e il fattore di carico specificati.

HashMap(IntPtr, JniHandleOwnership)

Costruttore usato 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 all'istanza di Android sottostante.

(Ereditato da Object)
IsEmpty

Da aggiungere

(Ereditato da AbstractMap)
JniIdentityHashCode

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
JniPeerMembers

Implementazione basata sulla tabella hash dell'interfaccia Map .

PeerReference

Implementazione basata sulla tabella hash dell'interfaccia Map .

(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()

Restituisce una copia superficiale di questa HashMap istanza: le chiavi e i valori stessi non vengono clonati.

Compute(Object, IBiFunction)

Implementazione basata sulla tabella hash dell'interfaccia Map .

ComputeIfAbsent(Object, IFunction)

Implementazione basata sulla tabella hash dell'interfaccia Map .

ComputeIfPresent(Object, IBiFunction)

Implementazione basata sulla tabella hash dell'interfaccia Map .

ContainsKey(Object)

Da aggiungere

(Ereditato da AbstractMap)
ContainsValue(Object)

Da aggiungere

(Ereditato da AbstractMap)
Dispose()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
Dispose(Boolean)

Implementazione basata sulla tabella hash dell'interfaccia Map .

(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 sulla tabella hash dell'interfaccia Map .

Get(Object)

Da aggiungere

(Ereditato da AbstractMap)
GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
GetOrDefault(Object, Object)

Implementazione basata sulla tabella hash dell'interfaccia Map .

JavaFinalize()

Chiamato dal Garbage Collector in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto.

(Ereditato da Object)
KeySet()

Da aggiungere

(Ereditato da AbstractMap)
Merge(Object, Object, IBiFunction)

Implementazione basata sulla tabella hash dell'interfaccia Map .

Notify()

Riattiva un singolo thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
Put(Object, Object)

Da aggiungere

(Ereditato da AbstractMap)
PutAll(IDictionary)

Da aggiungere

(Ereditato da AbstractMap)
PutIfAbsent(Object, Object)

Implementazione basata sulla tabella hash dell'interfaccia Map .

Remove(Object)

Da aggiungere

(Ereditato da AbstractMap)
Remove(Object, Object)

Rimuove il mapping per la chiave specificata da questa mappa, se presente.

Replace(Object, Object)

Implementazione basata sulla tabella hash dell'interfaccia Map .

Replace(Object, Object, Object)

Implementazione basata sulla tabella hash dell'interfaccia Map .

ReplaceAll(IBiFunction)

Implementazione basata sulla tabella hash dell'interfaccia Map .

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
Size()

Da aggiungere

(Ereditato da AbstractMap)
ToArray<T>()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
Values()

Da aggiungere

(Ereditato da AbstractMap)
Wait()

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.<

(Ereditato da Object)
Wait(Int64)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo 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

IJavaPeerable.Disposed()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.Finalized()

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implementazione basata sulla tabella hash dell'interfaccia Map .

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione dei tipi controllati dal runtime Android.

JavaCast<TResult>(IJavaObject)

Implementazione basata sulla tabella hash dell'interfaccia Map .

GetJniTypeName(IJavaPeerable)

Implementazione basata sulla tabella hash dell'interfaccia Map .

Si applica a