Hashtable 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.
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori.
[Android.Runtime.Register("java/util/Hashtable", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class Hashtable : Java.Util.Dictionary, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.IMap
[<Android.Runtime.Register("java/util/Hashtable", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type Hashtable = class
inherit Dictionary
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IMap
- Ereditarietà
- Attributi
- Implementazioni
Commenti
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. Qualsiasi oggetto nonnull
può essere usato come chiave o come valore.
Per archiviare e recuperare correttamente oggetti da una tabella hash, gli oggetti usati come chiavi devono implementare il hashCode
metodo e il equals
metodo .
Un'istanza di Hashtable
ha due parametri che influiscono sulle prestazioni: capacità iniziale e fattore di carico. La capacità è il numero di bucket nella tabella hash e la capacità iniziale è semplicemente la capacità al momento della creazione della tabella hash. Si noti che la tabella hash è aperta: nel caso di una "collisione hash", un singolo bucket archivia più voci, che devono essere cercate in sequenza. Il fattore di carico è una misura della modalità di recupero della tabella hash completa prima dell'aumento automatico della capacità. I parametri iniziali della capacità e del fattore di carico sono solo suggerimenti per l'implementazione. I dettagli esatti relativi a quando e se il metodo rehash viene richiamato sono dipendenti dall'implementazione.
In genere, il fattore di carico predefinito (.75) offre un buon compromesso tra il tempo e i costi dello spazio. I valori più elevati riducono l'overhead dello spazio, ma aumentano il costo di tempo per cercare una voce (che si riflette nella maggior Hashtable
parte delle operazioni, tra cui get
e put
).
La capacità iniziale controlla un compromesso tra lo spazio sprecato e la necessità di rehash
operazioni che richiedono molto tempo. Non rehash
si verificherà alcuna operazione se la capacità iniziale è maggiore del numero massimo di voci Hashtable
che conterrà diviso per il fattore di carico. Tuttavia, l'impostazione della capacità iniziale troppo elevata può sprecare spazio.
Se molte voci devono essere inserite in un oggetto Hashtable
, la creazione con una capacità sufficientemente grande può consentire l'inserimento delle voci in modo più efficiente rispetto a consentire l'esecuzione del rihashing automatico in base alle esigenze per aumentare la tabella.
In questo esempio viene creata una tabella hash di numeri. Usa i nomi dei numeri come chiavi:
{@code
Hashtable<String, Integer> numbers
= new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);}
Per recuperare un numero, usare il codice seguente:
{@code
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}}
Gli iteratori restituiti dal metodo delle raccolte restituiti da iterator
tutti i "metodi di visualizzazione raccolta" di questa classe sono <em>fail-fast</em>: se la tabella Hashtable viene modificata in qualsiasi momento dopo la creazione dell'iteratore, in qualsiasi modo tranne che tramite il proprio remove
metodo dell'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. Le enumerazioni restituite dai metodi e di #keys keys
Hashtable sono <em>not</em> fail-fast. Se hashtable viene modificato strutturalmente in qualsiasi momento dopo la creazione dell'enumerazione, i risultati dell'enumerazione non sono #elements elements
definiti.
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.
A partire dalla piattaforma Java 2 v1.2, questa classe è stata adattata per implementare l'interfaccia Map
, rendendola un membro del
Java Collections Framework. A differenza delle nuove implementazioni della raccolta, Hashtable
viene sincronizzata. Se non è necessaria un'implementazione thread-safe, è consigliabile usare HashMap
al posto di Hashtable
. Se si desidera un'implementazione altamente simultanea thread-safe, è consigliabile usare java.util.concurrent.ConcurrentHashMap
al posto di Hashtable
.
Aggiunta nella versione 1.0.
Documentazione java per java.util.Hashtable
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Costruttori
Hashtable() |
Costruisce una nuova tabella hash vuota con una capacità iniziale predefinita (11) e un fattore di carico (0). |
Hashtable(IDictionary) |
Costruisce una nuova tabella hash con gli stessi mapping della mappa specificata. |
Hashtable(Int32) |
Costruisce una nuova tabella hash vuota con la capacità iniziale specificata e il fattore di carico predefinito (0). |
Hashtable(Int32, Single) |
Costruisce una nuova tabella hash vuota con la capacità iniziale specificata e il fattore di carico specificato. |
Hashtable(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 |
Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
IsEmpty |
Verifica se questa tabella hash non esegue il mapping di chiavi a valori. |
JniIdentityHashCode |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
JniPeerMembers |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
PeerReference |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (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() |
Cancella questa tabella hash in modo che non contenga chiavi. |
Clone() |
Crea una copia superficiale di questa tabella hash. |
Compute(Object, IBiFunction) |
Da aggiungere |
ComputeIfAbsent(Object, IFunction) |
Da aggiungere |
ComputeIfPresent(Object, IBiFunction) |
Da aggiungere |
Contains(Object) |
Verifica se alcune chiavi eseguono il mapping del valore specificato in questa tabella hash. |
ContainsKey(Object) |
Verifica se l'oggetto specificato è una chiave in questa tabella hash. |
ContainsValue(Object) |
Restituisce true se questa tabella hash esegue il mapping di una o più chiavi a questo valore. |
Dispose() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
Dispose(Boolean) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
Elements() |
Restituisce un'enumerazione dei valori in questa tabella hash. |
EntrySet() |
Restituisce una |
Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
ForEach(IBiConsumer) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
Get(Object) |
Restituisce il valore a cui viene eseguito il mapping della chiave specificata oppure |
GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
GetOrDefault(Object, Object) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
Keys() |
Restituisce un'enumerazione delle chiavi in questa tabella hash. |
KeySet() |
Restituisce una |
Merge(Object, Object, IBiFunction) |
Da aggiungere |
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) |
Esegue il mapping dell'oggetto specificato |
PutAll(IDictionary) |
Copia tutti i mapping dalla mappa specificata a questa tabella hash. |
PutIfAbsent(Object, Object) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
Rehash() |
Aumenta la capacità di e riorganizza internamente questa tabella hash, in modo da supportare e accedere alle relative voci in modo più efficiente. |
Remove(Object) |
Rimuove la chiave (e il valore corrispondente) da questa tabella hash. |
Remove(Object, Object) |
Rimuove la chiave (e il valore corrispondente) da questa tabella hash. |
Replace(Object, Object) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
Replace(Object, Object, Object) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
ReplaceAll(IBiFunction) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
Size() |
Restituisce il numero di chiavi in questa tabella hash. |
ToArray<T>() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
ToString() |
Restituisce una rappresentazione di stringa dell'oggetto. (Ereditato da Object) |
UnregisterFromRuntime() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
Values() |
Restituisce una |
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) |
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, 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) |
Implementazioni dell'interfaccia esplicita
IJavaPeerable.Disposed() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.Finalized() |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.JniManagedPeerState |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. (Ereditato da Object) |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |
GetJniTypeName(IJavaPeerable) |
Questa classe implementa una tabella hash, che esegue il mapping delle chiavi ai valori. |