Partager via


HashMap Classe

Définition

Implémentation basée sur une table de hachage de l’interface 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
Héritage
Dérivé
Attributs
Implémente

Remarques

Implémentation basée sur une table de hachage de l’interface Map . Cette implémentation fournit toutes les opérations de mappage facultatives et autorise les null valeurs et la null clé. (La HashMap classe est à peu près équivalente à Hashtable, sauf qu’elle est non synchronisée et autorise les valeurs null.) Cette classe ne garantit pas l’ordre de la carte ; en particulier, elle ne garantit pas que l’ordre restera constant au fil du temps.

Cette implémentation fournit des performances à temps constant pour les opérations de base (get et put), en supposant que la fonction de hachage disperse correctement les éléments entre les compartiments. L’itération sur les vues de collection nécessite un temps proportionnel à la « capacité » de l’instance HashMap (le nombre de compartiments) plus sa taille (le nombre de mappages clé-valeur). Par conséquent, il est très important de ne pas définir la capacité initiale trop élevée (ou le facteur de charge trop faible) si les performances d’itération sont importantes.

Une instance de HashMap possède deux paramètres qui affectent ses performances : la capacité initiale et le facteur de charge. La capacité est le nombre de compartiments dans la table de hachage, et la capacité initiale est simplement la capacité au moment où la table de hachage est créée. Le facteur de charge est une mesure de la quantité totale de la table de hachage autorisée à obtenir avant que sa capacité soit automatiquement augmentée. Lorsque le nombre d’entrées dans la table de hachage dépasse le produit du facteur de charge et la capacité actuelle, la table de hachage est réhésurée (autrement dit, les structures de données internes sont reconstruites) afin que la table de hachage ait environ deux fois le nombre de compartiments.

En règle générale, le facteur de charge par défaut (.75) offre un bon compromis entre le temps et les coûts d’espace. Les valeurs plus élevées diminuent la surcharge d’espace, mais augmentent le coût de recherche (reflétées dans la plupart des opérations de la HashMap classe, y compris get et put). Le nombre attendu d’entrées dans la carte et son facteur de charge doivent être pris en compte lors de la définition de sa capacité initiale, afin de réduire le nombre d’opérations de réachage. Si la capacité initiale est supérieure au nombre maximal d’entrées divisées par le facteur de charge, aucune opération de réachage ne se produit.

Si de nombreux mappages doivent être stockés dans une HashMap instance, la création de celle-ci avec une capacité suffisamment importante permet de stocker les mappages de manière plus efficace que de laisser effectuer un réachage automatique si nécessaire pour augmenter la table. Notez que l’utilisation de nombreuses clés avec la même hashCode() méthode est un moyen sûr de ralentir les performances de n’importe quelle table de hachage. Pour améliorater l’impact, lorsque les clés sont Comparable, cette classe peut utiliser l’ordre de comparaison entre les clés pour aider à rompre les liens.

<>notez que cette implémentation n’est pas synchronisée.</strong> Si plusieurs threads accèdent simultanément à une carte de hachage et qu’au moins un des threads modifie la carte structurellement, il doit être synchronisé en externe. (Une modification structurelle est toute opération qui ajoute ou supprime un ou plusieurs mappages ; il suffit de modifier la valeur associée à une clé qu’une instance contient déjà n’est pas une modification structurelle.) Cette opération est généralement effectuée en synchronisant sur un objet qui encapsule naturellement la carte.

Si aucun objet de ce type n’existe, la carte doit être « encapsulée » à l’aide de la Collections#synchronizedMap Collections.synchronizedMap méthode. Cela est le mieux fait au moment de la création, pour empêcher l’accès non synchronisé accidentel à la carte :

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

Les itérateurs retournés par toutes les « méthodes de vue de collection » de cette classe sont rapides : si la carte est modifiée structurellement à tout moment après la création de l’itérateur, à tout moment, à l’exception de la méthode de remove l’itérateur, l’itérateur lève un ConcurrentModificationException. Par conséquent, face à la modification simultanée, l’itérateur échoue rapidement et correctement, plutôt que de risquer un comportement arbitraire et non déterministe à un moment indéterminé à l’avenir.

Notez que le comportement de défaillance rapide d’un itérateur ne peut pas être garanti, en général, impossible d’apporter des garanties difficiles en présence d’une modification simultanée non synchronisée. Les itérateurs à vitesse d’échec lèvent ConcurrentModificationException un meilleur effort. Par conséquent, il serait incorrect d’écrire un programme qui dépendait de cette exception pour son exactitude : le comportement d’itérateur à échec doit être utilisé uniquement pour détecter les bogues.

Cette classe est membre de Java Collections Framework.

Ajouté dans la version 1.2.

Documentation Java pour java.util.HashMap.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Constructeurs

HashMap()

Construit un vide HashMap avec la capacité initiale par défaut (16) et le facteur de charge par défaut (0).

HashMap(IDictionary)

Construit un nouveau HashMap avec les mêmes mappages que celui spécifié Map.

HashMap(Int32)

Construit un vide HashMap avec la capacité initiale spécifiée et le facteur de charge par défaut (0).

HashMap(Int32, Single)

Construit un vide HashMap avec la capacité initiale et le facteur de charge spécifiés.

HashMap(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Propriétés

Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
IsEmpty

À ajouter

(Hérité de AbstractMap)
JniIdentityHashCode

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
JniPeerMembers

Implémentation basée sur une table de hachage de l’interface Map .

PeerReference

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

Clear()

À ajouter

(Hérité de AbstractMap)
Clone()

Retourne une copie superficielle de cette HashMap instance : les clés et les valeurs elles-mêmes ne sont pas clonées.

Compute(Object, IBiFunction)

Implémentation basée sur une table de hachage de l’interface Map .

ComputeIfAbsent(Object, IFunction)

Implémentation basée sur une table de hachage de l’interface Map .

ComputeIfPresent(Object, IBiFunction)

Implémentation basée sur une table de hachage de l’interface Map .

ContainsKey(Object)

À ajouter

(Hérité de AbstractMap)
ContainsValue(Object)

À ajouter

(Hérité de AbstractMap)
Dispose()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
Dispose(Boolean)

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
EntrySet()

Retourne une Set vue des mappages contenus dans cette carte.

Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
ForEach(IBiConsumer)

Implémentation basée sur une table de hachage de l’interface Map .

Get(Object)

À ajouter

(Hérité de AbstractMap)
GetHashCode()

Retourne une valeur de code de hachage pour l'objet.

(Hérité de Object)
GetOrDefault(Object, Object)

Implémentation basée sur une table de hachage de l’interface Map .

JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
KeySet()

À ajouter

(Hérité de AbstractMap)
Merge(Object, Object, IBiFunction)

Implémentation basée sur une table de hachage de l’interface Map .

Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
Put(Object, Object)

À ajouter

(Hérité de AbstractMap)
PutAll(IDictionary)

À ajouter

(Hérité de AbstractMap)
PutIfAbsent(Object, Object)

Implémentation basée sur une table de hachage de l’interface Map .

Remove(Object)

À ajouter

(Hérité de AbstractMap)
Remove(Object, Object)

Supprime le mappage de la clé spécifiée de cette carte s’il est présent.

Replace(Object, Object)

Implémentation basée sur une table de hachage de l’interface Map .

Replace(Object, Object, Object)

Implémentation basée sur une table de hachage de l’interface Map .

ReplaceAll(IBiFunction)

Implémentation basée sur une table de hachage de l’interface Map .

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
Size()

À ajouter

(Hérité de AbstractMap)
ToArray<T>()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
ToString()

Retourne une représentation de chaîne de l'objet.

(Hérité de Object)
UnregisterFromRuntime()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
Values()

À ajouter

(Hérité de AbstractMap)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

IJavaPeerable.Disposed()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.DisposeUnlessReferenced()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.Finalized()

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.JniManagedPeerState

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implémentation basée sur une table de hachage de l’interface Map .

(Hérité de Object)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Implémentation basée sur une table de hachage de l’interface Map .

GetJniTypeName(IJavaPeerable)

Implémentation basée sur une table de hachage de l’interface Map .

S’applique à