HashMap Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Hashtabellenbasierte Implementierung der Map Schnittstelle.
[Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class HashMap : Java.Util.AbstractMap, IDisposable, 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
- Vererbung
- Abgeleitet
- Attribute
- Implementiert
Hinweise
Hashtabellenbasierte Implementierung der Map Schnittstelle. Diese Implementierung stellt alle optionalen Zuordnungsvorgänge bereit und erlaubt null Werte und den null Schlüssel. (Die HashMap Klasse ist ungefähr gleichbedeutend mit Hashtableder Ausnahme, dass sie nicht synchronisiert ist und Nullwerte zulässt.) Diese Klasse garantiert nicht die Reihenfolge der Karte; Insbesondere garantiert sie nicht, dass die Bestellung im Laufe der Zeit konstant bleibt.
Diese Implementierung bietet eine konstante Leistung für die grundlegenden Vorgänge (get und put), vorausgesetzt, die Hashfunktion verteilt die Elemente ordnungsgemäß zwischen den Buckets. Iteration über Sammlungsansichten erfordert Zeit proportional zur "Kapazität" der HashMap Instanz (die Anzahl der Buckets) sowie deren Größe (die Anzahl der Schlüsselwertzuordnungen). Daher ist es sehr wichtig, die anfängliche Kapazität nicht zu hoch (oder den Lastfaktor zu niedrig) festzulegen, wenn die Iterationsleistung wichtig ist.
Eine Instanz von HashMap 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. Der Ladefaktor ist ein Maß dafür, wie voll die Hashtabelle abgerufen werden darf, bevor die Kapazität automatisch erhöht wird. Wenn die Anzahl der Einträge in der Hashtabelle das Produkt des Ladefaktors und der aktuellen Kapazität überschreitet, wird die Hashtabelle erneut aktualisiert (d. h. interne Datenstrukturen werden neu erstellt), sodass die Hashtabelle ungefähr doppelt so viele Buckets aufweist.
Im Allgemeinen bietet der Standardlastfaktor (.75) einen guten Kompromiss zwischen Zeit und Raumkosten. Höhere Werte verringern den Platzaufwand, erhöhen aber die Nachschlagekosten (in den meisten Vorgängen der HashMap Klasse, einschließlich get und put). Die erwartete Anzahl von Einträgen in der Karte und deren Lastfaktor sollten beim Festlegen der Anfangskapazität berücksichtigt werden, um die Anzahl der Rehashvorgänge zu minimieren. Wenn die Anfängliche Kapazität größer als die maximale Anzahl von Einträgen ist, die durch den Ladefaktor geteilt werden, treten niemals Rehashvorgänge auf.
Wenn viele Zuordnungen in einer HashMap Instanz gespeichert werden sollen, kann die Erstellung mit einer ausreichend großen Kapazität die Speicherung der Zuordnungen effizienter ermöglichen, als die automatische Aktualisierung nach Bedarf durchführen zu lassen, um die Tabelle zu vergrößern. Beachten Sie, dass die Verwendung vieler Schlüssel mit demselben hashCode() eine sichere Möglichkeit ist, die Leistung einer beliebigen Hashtabelle zu verlangsamen. Um die Auswirkungen zu verbessern, kann diese Klasse bei Schlüsseln Comparabledie Vergleichsreihenfolge zwischen Schlüsseln verwenden, um Verbindungen zu unterbrechen.
<strong>Note that this implementation is not synchronized.</strong> Wenn mehrere Threads gleichzeitig auf eine Hashzuordnung zugreifen und mindestens einer der Threads die Zuordnung strukturell ändert, muss sie extern synchronisiert werden. (Eine strukturelle Änderung ist jeder Vorgang, der eine oder mehrere Zuordnungen hinzufügt oder löscht; lediglich das Ändern des Werts, der einem Schlüssel zugeordnet ist, der bereits enthält, ist keine strukturelle Änderung.) Dies wird in der Regel durch Synchronisieren eines Objekts erreicht, das die Karte natürlich kapselt.
Wenn kein solches Objekt vorhanden ist, sollte die Zuordnung mithilfe der Collections#synchronizedMap Collections.synchronizedMap Methode "umbrochen" werden. Dies geschieht am besten zur Erstellungszeit, um versehentlichen nicht synchronisierten Zugriff auf die Karte zu verhindern:
Map m = Collections.synchronizedMap(new HashMap(...));
Die iteratoren, die von allen "Sammlungsansichtsmethoden" dieser Klasse zurückgegeben werden, sind fail-fast: Wenn die Karte nach dem Erstellen des Iterators strukturell geändert wird, außer über die eigene remove Methode des Iterators, löst der Iterator einen 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.
Beachten Sie, dass das fehlschnelle Verhalten eines Iterators nicht garantiert werden kann, da es im Allgemeinen unmöglich ist, im Vorhandensein nicht synchronisierter gleichzeitiger Änderungen harte Garantien zu gewährleisten. 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.
Diese Klasse ist ein Mitglied des Java Collections Framework.
In 1.2 hinzugefügt.
Java Dokumentation für java.util.HashMap.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| HashMap() |
Erstellt eine leere |
| HashMap(IDictionary) |
Erstellt eine neue |
| HashMap(Int32, Single) |
Erstellt eine leere |
| HashMap(Int32) |
Erstellt eine leere |
| HashMap(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| IsEmpty |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| JniIdentityHashCode |
Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist. (Geerbt von Object) |
| JniManagedPeerState |
Hashtabellenbasierte Implementierung der |
| JniPeerMembers |
Hashtabellenbasierte Implementierung der |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (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
| Name | Beschreibung |
|---|---|
| Clear() |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| Clone() |
Gibt eine flache Kopie dieser |
| Compute(Object, IBiFunction) |
Hashtabellenbasierte Implementierung der |
| ComputeIfAbsent(Object, IFunction) |
Hashtabellenbasierte Implementierung der |
| ComputeIfPresent(Object, IBiFunction) |
Hashtabellenbasierte Implementierung der |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Hashtabellenbasierte Implementierung der |
| ContainsKey(Object) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| ContainsValue(Object) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| Dispose() |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| Dispose(Boolean) |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| DisposeUnlessReferenced() |
Hashtabellenbasierte Implementierung der |
| EntrySet() |
Gibt eine |
| Equals(Object) |
Hashtabellenbasierte Implementierung der |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| ForEach(IBiConsumer) |
Hashtabellenbasierte Implementierung der |
| Get(Object) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| GetOrDefault(Object, Object) |
Hashtabellenbasierte Implementierung der |
| 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) |
| KeySet() |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| Merge(Object, Object, IBiFunction) |
Hashtabellenbasierte Implementierung der |
| NewHashMap(Int32) |
Hashtabellenbasierte Implementierung der |
| 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) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| PutAll(IDictionary) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| PutIfAbsent(Object, Object) |
Hashtabellenbasierte Implementierung der |
| Remove(Object, Object) |
Entfernt die Zuordnung für den angegebenen Schlüssel aus dieser Karte, falls vorhanden. |
| Remove(Object) |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| Replace(Object, Object, Object) |
Hashtabellenbasierte Implementierung der |
| Replace(Object, Object) |
Hashtabellenbasierte Implementierung der |
| ReplaceAll(IBiFunction) |
Hashtabellenbasierte Implementierung der |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Hashtabellenbasierte Implementierung der |
| Size() |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf. (Geerbt von Object) |
| Values() |
Soll hinzugefügt werden (Geerbt von AbstractMap) |
| 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, 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) |
| 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) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.Finalized() |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.JniObjectReferenceControlBlock |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Hashtabellenbasierte Implementierung der |
| IJavaPeerable.UnregisterFromRuntime() |
Hashtabellenbasierte Implementierung der |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
Hashtabellenbasierte Implementierung der |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |