- java.lang.Object
- java.util.AbstractMap <K,V>
- java.util.HashMap<K,V>
- Paramètres de type
K- le type des clés maintenues par cette table de correspondanceV- le type des valeurs mappées. Toutes les interfaces implémentées
Serializable,Cloneable,Map<K,V>
- Sous-classes directes connues :
LinkedHashMap,PrinterStateReasons
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
Implémentation de l'interfaceMapbasée sur une table de hachage. Cette implémentation fournit toutes les opérations de mappage optionnelles et autorisenullValeurs etnullclés. (CetteHashMapclasse équivaut à peu près àHashtable, sauf qu'elle n'est pas synchronisée et qu'elle accepte les valeurs nulles.) Cette classe ne garantit pas l'ordre de la table de hachage. En particulier, elle ne garantit pas que cet ordre reste constant dans le temps. L'implémentation offre des performances en temps constant pour les opérations de base (get和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'instanceHashMap(nombre de compartiments) plus sa taille (nombre de paires clé-valeur). Donc, si les performances d'itération sont importantes, ne définissez pas une capacité initiale trop élevée (ou un facteur de charge trop bas).HashMapLes instances deEn règle générale, le facteur de charge par défaut (.75) offre un bon compromis entre coûts temporel et spatial. Une valeur plus élevée réduit l'encombrement mémoire. Elle augmente toutefois le coût de recherche.
HashMap类的大多数操作中,包括get和putet如果要将多个映射存储在
HashMapSi vous devez stocker plusieurs tables dans une même instance dehashCode(), créez-la avec une capacité suffisamment grande. Cela permet un stockage plus efficace que l'exécution automatique du rehachage pour agrandir la table. Notez que l'utilisation de nombreuses clés avec le mêmeComparableconstitue un moyen sûr de ralentir les performances de toute table de hachage. Pour atténuer cet effet, lorsque les clés sont, cette classe peut utiliser l'ordre de comparaison entre les clés pour départager les égalités.
Collections.synchronizedMapLa méthode « encapsule » la carte. Il est préférable de le faire à la création, afin d'éviter tout accès désynchronisé à la carte.Map m = Collections.synchronizedMap(new HashMap(...));pour « envelopper » la table. Effectuez cette opération de préférence à la création, afin d'éviter tout accès accidentel non synchronisé :
removeHors méthode, l'itérateur lèvera une exception.ConcurrentModificationExceptionde l'itérateur lui-même, celui-ci lève une exception. Ainsi, face à une modification concurrente, l'itérateur échoue rapidement et proprement. Il évite ainsi tout comportement arbitraire et non déterministe à un moment indéterminé dans le futur.
ConcurrentModificationExceptionNotez que le comportement à échec rapide d'un itérateur ne peut pas être garanti. En général, il est impossible de donner une garantie ferme en présence de modifications concurrentes non synchronisées. Les itérateurs à échec rapide lèventsur la base du meilleur effort. Par conséquent, écrire un programme qui dépend de cette exception pour garantir sa correction est une erreur. Le comportement à échec rapide des itérateurs sert uniquement à détecter les bogues.
- Cette classe est membre du Java Collections Framework.
Object.hashCode()Depuis la version : 1.2 Voir aussi :Collection,Map,TreeMap,Hashtable, Serialized Form
-
-
嵌套类汇总
-
嵌套类/接口声明在类 java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
-
-
构造方法摘要
Constructeur Description HashMap()Construit une table vide avec la capacité initiale par défaut (16) et le facteur de charge par défaut (0.75) pourHashMap。HashMap(int initialCapacity)Construit une table vide avec la capacité initiale spécifiée et le facteur de charge par défaut (0.75) pourHashMap。HashMap(int initialCapacity, float loadFactor)Construit une table vide avec la capacité initiale et le facteur de charge spécifiésHashMap。HashMap(Map<? extends K,? extends V> m)Construit une nouvelleHashMapdont le mappage est identique à celuiMapspécifié.
-
方法摘要
Toutes les méthodes Méthodes d'instance Méthodes concrètes Variable et type Méthode Description voidclear()Supprime tous les mappages de cette map.Objectclone()Retourne une copie superficielle de cetteHashMapinstance : les clés et les valeurs elles-mêmes ne sont pas clonées.Vcompute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)Tente de calculer un mappage pour la clé spécifiée et sa valeur mappée actuelle (s'il n'y a pas de mappage actuel,null).VcomputeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)Si la clé spécifiée n'est pas encore associée à une valeur (ou est mappée ànull), tente de calculer sa valeur avec la fonction de mappage donnée et de l'insérer dans cette map, sauf sinull。VcomputeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)Si la valeur de la clé spécifiée existe et n'est pas null, tente de calculer un nouveau mappage à partir de la clé donnée et de sa valeur mappée actuelle.booleancontainsKey(Object key)Retournetrue。booleancontainsValue(Object value)Retournetrue。Set<Map.Entry<K,V>>entrySet()Retourne uneSetvue des mappages contenus dans cette map.Vget(Object key)Retourne la valeur à laquelle la clé spécifiée est mappée, ounull。booleanisEmpty()Retournetrue。Set<K>keySet()Retourne uneSetvue des clés contenues dans cette map.Vmerge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)Si la clé spécifiée n'est pas encore associée à une valeur ou est associée à null, l'associe à la valeur non nulle donnée.Vput(K key, V value)Associe la valeur spécifiée à la clé spécifiée dans cette map.voidputAll(Map<? extends K,? extends V> m)Copie tous les mappages de la map spécifiée dans cette map.Vremove(Object key)Supprime le mappage de la clé spécifiée de cette map, s'il existe.intsize()Retourne le nombre de mappages clé-valeur dans cette map.Collection<V>values()Retourne uneCollectionvue des valeurs contenues dans cette map.-
声明方法的类 java.util.AbstractMap
equals, hashCode, toString
-
声明方法的接口 java.util.Map
equals, forEach, getOrDefault, hashCode, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
构造方法详细信息
-
HashMap
public HashMap(int initialCapacity, float loadFactor)Construit une map vide avec la capacité initiale et le facteur de charge spécifiésHashMap。- Paramètres
initialCapacity- Capacité initialeloadFactor- Facteur de charge ExceptionsIllegalArgumentException- Si la capacité initiale est négative ou si le facteur de charge n'est pas positif
-
HashMap
public HashMap(int initialCapacity)
Construit une HashMap vide avec la capacité initiale spécifiée et le facteur de charge par défaut (0.75)HashMap。- Paramètres
initialCapacity- Capacité initiale. ExceptionsIllegalArgumentException- Si la capacité initiale est négative.
-
HashMap
public HashMap()
Construit une HashMap vide avec la capacité initiale par défaut (16) et le facteur de charge par défaut (0.75)HashMap。
-
HashMap
public HashMap(Map<? extends K,? extends V> m)
Construit une nouvelleHashMapavec les mêmes correspondances que laMapspécifiée.HashMapLa création utilise le facteur de charge par défaut (0.75) et une capacité initiale suffisante pour contenir lesMapcorrespondances spécifiées.- Paramètres
m-mCorrespondances à placer dans cette map. ExceptionsNullPointerException- Si la map spécifiée est null
-
-
方法详细信息
-
size
public int size()
Retourne le nombre de correspondances clé-valeur dans cette map.
-
isEmpty
public boolean isEmpty()
Retourne true si cette map ne contient aucune correspondance clé-valeurtrue。
-
get
public V get(Object key)
Retourne la valeur à laquelle la clé spécifiée est mappée, ou si ce mapping ne contient pas de mappage pour la clé.nullPlus formellement, si ce mapping contient un mappage d'une clék到值vtel que(key==null ? k==null : key.equals(k)), alors cette méthode retournev; sinon elle retournenull. (Il existe au plus un tel mappage.)Valeur de retour
nullne signifie pas nécessairement que le mapping ne contient pas de mappage pour la clé ; le mapping peut aussi mapper explicitement la clé ànull. On peut utiliser l'opérationcontainsKeypour distinguer ces deux cas.- Spécifié par :
get在界面Map<K,V>- Remplacé par :
get类AbstractMap<K,V>- Paramètres
key- Renvoie la valeur associée à la clé spécifiée.null- Voir aussi :
put(Object, Object)
-
containsKey
public boolean containsKey(Object key)
Retourne si ce mapping contient un mappage pour la clé spécifiée.true。- Spécifié par :
containsKey在界面Map<K,V>- Remplacé par :
containsKey在类AbstractMap<K,V>- Paramètres
key- la clé dont la présence dans ce mapping doit être testée Résultattruesi ce mapping contient un mappage pour la clé spécifiée.
-
put
public V put(K key, V value)
将指定的值与此映射中的指定键相关联。 如果映射先前包含键的映射,则替换旧值。- Spécifié par :
put在界面Map<K,V>- Remplacé par :
put在课堂上AbstractMap<K,V>- Paramètres
key- la clé à laquelle la valeur spécifiée est associéevalue- la valeur associée à la clé spécifiée Résultat la valeur précédemment associée àkey, ounullSi aucun mappage n'existekey. (Unnullrenvoi peut aussi indiquer que ce mappage était auparavant associénull与key).
-
putAll
public void putAll(Map<? extends K,? extends V> m)
Copie tous les mappages de la map spécifiée dans cette map. Ces mappages remplacent tout mappage existant dans cette map pour les clés présentes dans la map spécifiée.- Spécifié par :
putAll在界面Map<K,V>- Remplace :
putAll在类AbstractMap<K,V>- Paramètres
m- mappages à stocker dans cette map ExceptionsNullPointerException- si la map spécifiée est null
-
remove
public V remove(Object key)
Supprime le mappage de la clé spécifiée de cette map, s'il existe.
-
clear
public void clear()
Supprime tous les mappages de cette map. Après le retour de cet appel, la map sera vide.
-
containsValue
public boolean containsValue(Object value)
Renvoietrue。- Spécifié par :
containsValue在界面Map<K,V>- Remplace :
containsValue类AbstractMap<K,V>- Paramètres
value- la valeur dont la présence dans cette map doit être testée Résultattruetrue si cette map associe une ou plusieurs clés à la valeur spécifiée
-
keySet
public Set<K> keySet()
Retourne une vue des clés contenues dans cette map.SetL'ensemble est soutenu par la map, donc les modifications de la map se reflètent dans l'ensemble, et inversement. Si la map est modifiée pendant une itération sur l'ensemble (sauf via l'opération propre de l'itérateurremove), le résultat de l'itération est indéfini. L'ensemble prend en charge la suppression d'éléments, c'est-à-dire la suppression de la correspondance correspondante de la map, viaIterator.remove,Set.remove,removeAll,retainAlletclear. Il ne prend pas en charge les opérationsaddouaddAll操作。
-
values
public Collection<V> values()
Retourne une vue des valeurs contenues dans cette map.CollectionLa collection est soutenue par la map, donc les modifications de la map se reflètent dans la collection, et inversement. Si la map est modifiée pendant une itération sur la collection (sauf via l'opération propre de l'itérateurremove), le résultat de l'itération est indéfini. La collection prend en charge la suppression d'éléments, c'est-à-dire la suppression de la correspondance correspondante de la map, viaIterator.remove,Collection.remove,removeAll,retainAll和clear. Elle ne prend pas en charge les opérationsaddouaddAll操作。
-
entrySet
public Set<Map.Entry<K,V>> entrySet()
Retourne une vue des correspondances contenues dans cette map.SetL'ensemble est soutenu par la map, donc les modifications de la map se reflètent dans l'ensemble, et inversement. Si la map est modifiée pendant une itération sur l'ensemble (sauf via l'opération propre de l'itérateurremove, ou via les opérations sur l'entrée de map renvoyée par l'itérateursetValue…opération), le résultat de l'itération est indéfini. Cet ensemble prend en charge la suppression d'éléments, c'est-à-dire la suppression du mappage correspondant de la table, viaIterator.remove,Set.remove,removeAll,retainAll和clearopérations. Elle ne prend pas en charge les opérationsaddouaddAll操作。
-
computeIfAbsent
public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
Si la clé spécifiée n'est pas encore associée à une valeur (ou est mappée surnull), cette méthode tente de calculer sa valeur avec la fonction de mappage donnée, puis l'insère dans cette carte, sauf sinull. Si la fonction de mappage renvoienull, aucun mappage n'est enregistré. Si la fonction de mappage lève elle-même une exception (non vérifiée), l'exception est relancée et aucun mappage n'est enregistré. L'usage le plus courant consiste à construire un nouvel objet servant de valeur de mappage initiale ou de résultat mémorisé, comme ceci :map.computeIfAbsent(key, k -> new Value(f(k)));ou à implémenter un mappage multi-valeurs
Map<K,Collection<V>>, où chaque clé prend en charge plusieurs valeurs :map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);La fonction de mappage ne doit pas modifier cette carte pendant le calcul.
Si la méthode détecte que la fonction de mappage modifie cette carte pendant le calcul, elle lève, au mieux,
ConcurrentModificationException.- Spécifié par :
computeIfAbsent在界面Map<K,V>- Paramètres
key- clé à associer à la valeur spécifiéemappingFunction- fonction de mappage utilisée pour calculer la valeur. Résultat : la valeur actuelle (existante ou calculée) associée à la clé spécifiée, ou null si la valeur calculée est null. ExceptionsConcurrentModificationException- si la méthode détecte que la fonction de mappage modifie cette carte
-
computeIfPresent
public V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Si la valeur de la clé spécifiée existe et n'est pas null, une nouvelle valeur est calculée. Le calcul utilise la clé donnée et sa valeur de mappage actuelle. Si la fonction de remappage renvoie...null, le mappage est supprimé. Si la fonction de remappage lève elle-même une exception (non vérifiée), l'exception est relancée et le mappage actuel reste inchangé.La fonction de remappage ne doit pas modifier cette carte pendant le calcul.
Si la méthode détecte que la fonction de remappage modifie cette carte pendant le calcul, elle lève, au mieux,
ConcurrentModificationException.- Spécifié par :
computeIfPresent在界面Map<K,V>- Paramètres
key- clé à associer à la valeur spécifiéeremappingFunction- fonction de remappage utilisée pour calculer la valeur. Résultat : la nouvelle valeur associée à la clé spécifiée, ou null s'il n'y en a pas. ExceptionsConcurrentModificationException- si la méthode détecte que la fonction de remappage modifie cette carte
-
compute
public V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
Essaie de calculer un mappage pour la clé spécifiée et sa valeur mappée actuelle (s'il n'y a pas de valeur actuelle,null). Par exemple, pour créer ou ajouterStringdes messages au mappage de valeurs :(La méthodemap.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))merge()est généralement plus pratique pour ce type d'usage.) Si la fonction de remappage renvoienull, le mappage est supprimé (ou reste absent s'il n'existait pas au départ). Si la fonction de remappage elle-même lève une exception (non vérifiée), l'exception est relancée et le mappage actuel reste inchangé.La fonction de remappage ne doit pas modifier ce mappage pendant le calcul.
Si la méthode détecte que la fonction de remappage modifie ce mappage pendant le calcul, elle fait de son mieux pour lever
ConcurrentModificationException.- Specified by:
compute在界面Map<K,V>- Paramètres
key- clé à laquelle la valeur spécifiée est associéeremappingFunction- fonction de remappage pour calculer une valeur. Résultat : nouvelle valeur associée à la clé spécifiée, ou null s'il n'y en a pas. ExceptionsConcurrentModificationException- si la fonction de remappage modifie ce mappage
-
merge
public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
Si la clé spécifiée n'est pas encore associée à une valeur ou est associée à null, elle est associée à la valeur non nulle donnée. Sinon, la valeur associée est remplacée par le résultat de la fonction de remappage donnée, ou supprimée si le résultat estnull. Cette méthode est utile pour combiner plusieurs valeurs mappées pour une clé. Par exemple, pour créer ou ajouterString msgau mappage de valeurs :map.merge(key, msg, String::concat)Si la fonction de remappage renvoie
null, le mappage est supprimé. Si la fonction de remappage elle-même lève une exception (non vérifiée), l'exception est relancée et le mappage actuel reste inchangé.La fonction de remappage ne doit pas modifier ce mappage pendant le calcul.
Si la méthode détecte que la fonction de remappage modifie ce mappage pendant le calcul, elle fait de son mieux pour lever
ConcurrentModificationException.- Specified by:
merge在界面Map<K,V>- Paramètres
key- clé à laquelle la valeur de résultat est associéevalue- Une valeur non nulle à fusionner avec la valeur existante associée à la clé.remappingFunction- fonction de remappage pour recalculer une valeur si elle existe. Résultat : nouvelle valeur associée à la clé spécifiée, ou null si aucune valeur n'est associée à la clé. ExceptionsConcurrentModificationException- si la fonction de remappage modifie ce mappage
-
-