Freigeben über


Hashtable Klasse

Definition

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

[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
Vererbung
Attribute
Implementiert

Hinweise

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet. Jedes Nicht-Objektnull kann als Schlüssel oder als Wert verwendet werden.

Um Objekte erfolgreich aus einer Hashtabelle zu speichern und abzurufen, müssen die als Schlüssel verwendeten Objekte die hashCode Methode und die equals Methode implementieren.

Eine Instanz von Hashtable zwei Parametern, die sich auf die Leistung auswirken: anfängliche Kapazität und Auslastungsfaktor. Die Kapazität ist die Anzahl der Buckets in der Hashtabelle, und die anfängliche Kapazität ist einfach die Kapazität zum Zeitpunkt der Erstellung der Hashtabelle. Beachten Sie, dass die Hashtabelle geöffnet ist: Bei einer "Hashkonflikt" speichert ein einzelner Bucket mehrere Einträge, die sequenziell durchsucht werden müssen. Der Ladefaktor ist ein Maß dafür, wie voll die Hashtabelle abgerufen werden darf, bevor die Kapazität automatisch erhöht wird. Die Anfänglichen Kapazitäts- und Lastfaktorparameter sind lediglich Hinweise auf die Implementierung. Die genauen Details dazu, wann und ob die Rehash-Methode aufgerufen wird, sind implementierungsabhängig.

Im Allgemeinen bietet der Standardlastfaktor (.75) einen guten Kompromiss zwischen Zeit und Raumkosten. Höhere Werte verringern den Speicherplatzaufwand, erhöhen aber die Zeitkosten, um einen Eintrag nachzuschlagen (was in den meisten Vorgängen Hashtable einschließlich get und put).

Die anfängliche Kapazität steuert einen Kompromiss zwischen verschwendetem Raum und der Notwendigkeit von rehash Vorgängen, die zeitaufwändig sind. Es treten niemalsrehash Vorgänge auf, wenn die Anfangskapazität größer als die maximale Anzahl von Einträgen ist, die Hashtable durch den Lastfaktor dividiert werden. Das Festlegen der anfangs zu hohen Kapazität kann jedoch Platz verschwenden.

Wenn viele Einträge in einer HashtableDatei erstellt werden sollen, kann die Erstellung mit einer ausreichend großen Kapazität dazu führen, dass die Einträge effizienter eingefügt werden können, als dass sie bei Bedarf eine automatische Aktualisierung durchführen lassen, um die Tabelle zu vergrößern.

In diesem Beispiel wird eine Hashtabelle mit Zahlen erstellt. Sie verwendet die Namen der Zahlen als Schlüssel:

{@code
              Hashtable<String, Integer> numbers
                = new Hashtable<String, Integer>();
              numbers.put("one", 1);
              numbers.put("two", 2);
              numbers.put("three", 3);}

Verwenden Sie den folgenden Code, um eine Zahl abzurufen:

{@code
              Integer n = numbers.get("two");
              if (n != null) {
                System.out.println("two = " + n);
              }}

Die iteratoren, die von der Methode der Auflistungen zurückgegeben werden, die von allen "Sammlungsansichtsmethoden" dieser Klasse zurückgegeben werden, sind <>fail-fast</em>: Wenn die Hashtable nach dem iterator Erstellen des Iterators strukturell geändert wird, außer über die eigene remove Methode des Iterators, löst der Iterator eine .ConcurrentModificationException Daher schlägt der Iterator angesichts der gleichzeitigen Änderung schnell und sauber fehl, anstatt willkürliches, nicht deterministisches Verhalten zu einem unbestimmten Zeitpunkt in der Zukunft zu riskieren. Die von Hashtables #keys keys und #elements elements Methoden zurückgegebenen Enumerationen sind <em>not</em> fail-fast. Wenn die Hashtable nach erstellung der Enumeration strukturell geändert wird, werden die Ergebnisse der Enumeration nicht definiert.

Beachten Sie, dass das fehlschnelle Verhalten eines Iterators nicht garantiert werden kann, da es im Allgemeinen unmöglich ist, im Vorhandensein einer nicht synchronisierten gleichzeitigen Änderung hart garantiert zu werden. Fail-fast iterators throw ConcurrentModificationException on a best-effort. Daher wäre es falsch, ein Programm zu schreiben, das von dieser Ausnahme für seine Richtigkeit abhängig ist: Das fehlerschnelle Verhalten von Iteratoren sollte nur verwendet werden, um Fehler zu erkennen.

Ab der Java 2-Plattform v1.2 wurde diese Klasse umgerüstet, um die Map Schnittstelle zu implementieren, wodurch sie mitglied der

Java Collections Framework. Im Gegensatz zu den neuen Sammlungsimplementierungen Hashtable wird die Synchronisierung erfolgt. Wenn keine threadsichere Implementierung erforderlich ist, empfiehlt es sich, HashMap anstelle von Hashtable. Wenn eine threadsichere, hoch gleichzeitige Implementierung gewünscht wird, empfiehlt es sich java.util.concurrent.ConcurrentHashMap , anstelle von Hashtable.

In 1.0 hinzugefügt.

Java-Dokumentation für java.util.Hashtable.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

Hashtable()

Erstellt eine neue, leere Hashtabelle mit einer Standardkapazität (11) und einem Lastfaktor (0).

Hashtable(IDictionary)

Erstellt eine neue Hashtable mit den gleichen Zuordnungen wie die angegebene Karte.

Hashtable(Int32)

Erstellt eine neue, leere Hashtable mit der angegebenen Anfangskapazität und dem Standardlastfaktor (0).

Hashtable(Int32, Single)

Erstellt eine neue, leere Hashtabelle mit der angegebenen Anfangskapazität und dem angegebenen Ladefaktor.

Hashtable(IntPtr, JniHandleOwnership)

Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
IsEmpty

Testet, ob diese Hashtabelle keine Schlüssel zu Werten zuordnet.

JniIdentityHashCode

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
JniPeerMembers

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

PeerReference

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

Methoden

Clear()

Löscht diese Hashtabelle, sodass sie keine Schlüssel enthält.

Clone()

Erstellt eine flache Kopie dieser Hashtabelle.

Compute(Object, IBiFunction)

So wird's hinzugefügt

ComputeIfAbsent(Object, IFunction)

So wird's hinzugefügt

ComputeIfPresent(Object, IBiFunction)

So wird's hinzugefügt

Contains(Object)

Testet, ob einige Schlüssel dem angegebenen Wert in dieser Hashtabelle zugeordnet sind.

ContainsKey(Object)

Testet, ob das angegebene Objekt ein Schlüssel in dieser Hashtable ist.

ContainsValue(Object)

Gibt true zurück, wenn dieser Hashtable mindestens einen Schlüssel zu diesem Wert zuordnet.

Dispose()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
Dispose(Boolean)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
Elements()

Gibt eine Aufzählung der Werte in dieser Hashtabelle zurück.

EntrySet()

Gibt eine Set Ansicht der In dieser Karte enthaltenen Zuordnungen zurück.

Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
ForEach(IBiConsumer)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

Get(Object)

Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet wird oder null wenn diese Zuordnung keine Zuordnung für den Schlüssel enthält.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetOrDefault(Object, Object)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Keys()

Gibt eine Aufzählung der Schlüssel in dieser Hashtable zurück.

KeySet()

Gibt eine Set Ansicht der in dieser Karte enthaltenen Schlüssel zurück.

Merge(Object, Object, IBiFunction)

So wird's hinzugefügt

Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
Put(Object, Object)

Ordnet den angegebenen Wert key der in dieser Hashtabelle angegebenen value zu.

PutAll(IDictionary)

Kopiert alle Zuordnungen aus der angegebenen Zuordnung in diese Hashtabelle.

PutIfAbsent(Object, Object)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

Rehash()

Erhöht die Kapazität und intern neu organisiert diese Hashtable, um ihre Einträge effizienter aufzunehmen und darauf zuzugreifen.

Remove(Object)

Entfernt den Schlüssel (und den entsprechenden Wert) aus dieser Hashtabelle.

Remove(Object, Object)

Entfernt den Schlüssel (und den entsprechenden Wert) aus dieser Hashtabelle.

Replace(Object, Object)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

Replace(Object, Object, Object)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

ReplaceAll(IBiFunction)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
Size()

Gibt die Anzahl der Schlüssel in dieser Hashtabelle zurück.

ToArray<T>()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
Values()

Gibt eine Collection Ansicht der in dieser Karte enthaltenen Werte zurück.

Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<><

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.Finalized()

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

GetJniTypeName(IJavaPeerable)

Diese Klasse implementiert eine Hashtabelle, die Schlüssel zu Werten zuordnet.

Gilt für: