模块  java.base
Paquetage java.util

Class HashMap<K,​V>

  • Paramètres de type
    K- le type des clés maintenues par cette table de correspondance
    V- 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 de

    En 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èvent

    sur 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
    • 构造方法摘要

      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 nouvelleHashMap dont le mappage est identique à celui Mapspécifié.
    • 方法摘要

      Toutes les méthodes Méthodes d'instance Méthodes concrètes Variable et type Méthode Description
      void clear()
      Supprime tous les mappages de cette map.
      Object clone()
      Retourne une copie superficielle de cetteHashMapinstance : les clés et les valeurs elles-mêmes ne sont pas clonées.
      V compute​(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 ).
      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 ànull ), tente de calculer sa valeur avec la fonction de mappage donnée et de l'insérer dans cette map, sauf si null 。
      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, tente de calculer un nouveau mappage à partir de la clé donnée et de sa valeur mappée actuelle.
      boolean containsKey​(Object key)
      Retournetrue 。
      boolean containsValue​(Object value)
      Retournetrue 。
      Set<Map.Entry<K,​V>> entrySet()
      Retourne uneSetvue des mappages contenus dans cette map.
      V get​(Object key)
      Retourne la valeur à laquelle la clé spécifiée est mappée, ounull 。
      boolean isEmpty()
      Retournetrue 。
      Set<K> keySet()
      Retourne uneSetvue des clés contenues dans cette map.
      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, l'associe à la valeur non nulle donnée.
      V put​(K key, V value)
      Associe la valeur spécifiée à la clé spécifiée dans cette map.
      void putAll​(Map<? extends K,​? extends V> m)
      Copie tous les mappages de la map spécifiée dans cette map.
      V remove​(Object key)
      Supprime le mappage de la clé spécifiée de cette map, s'il existe.
      int size()
      Retourne le nombre de mappages clé-valeur dans cette map.
      Collection<V> values()
      Retourne uneCollectionvue des valeurs contenues dans cette map.
    • 构造方法详细信息

      • 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é initiale
        loadFactor- Facteur de charge Exceptions
        IllegalArgumentException- 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. Exceptions
        IllegalArgumentException- 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 nouvelleHashMap avec 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. Exceptions
        NullPointerException- Si la map spécifiée est null
    • 方法详细信息

      • size

        public int size()
        Retourne le nombre de correspondances clé-valeur dans cette map.
        Spécifié par :
        size在界面 Map<K,​V>
        Remplacé par :
        size类 AbstractMap<K,​V>
        Résultat : le nombre de correspondances clé-valeur dans cette map
      • isEmpty

        public boolean isEmpty()
        Retourne true si cette map ne contient aucune correspondance clé-valeurtrue 。
        Spécifié par :
        isEmpty在界面 Map<K,​V>
        Remplacé par :
        isEmpty类 AbstractMap<K,​V>
        Résultat
        trueSi ce mapping ne contient pas de mappage clé-valeur
      • 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 retournullne 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ésultat
        truesi 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ée
        value- 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 Exceptions
        NullPointerException- 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.
        Spécifié par :
        remove在界面 Map<K,​V>
        Remplace :
        remove在类 AbstractMap<K,​V>
        Paramètres
        key- clé dont le mappage doit être supprimé de la map Résultat Si aucun
        keymappage n'existe, la valeur précédente associée àkeyou null. (Unnullrenvoi peut aussi indiquer que ce mappage était auparavant associénull与key).
      • clear

        public void clear()
        Supprime tous les mappages de cette map. Après le retour de cet appel, la map sera vide.
        Spécifié par :
        clear在界面 Map<K,​V>
        Remplace :
        clearDans la classe AbstractMap<K,​V>
      • 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ésultat
        truetrue 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 , retainAll etclear. Il ne prend pas en charge les opérationsaddou addAll操作。
        Spécifié par :
        keySet在界面 Map<K,​V>
        Remplace :
        keySet在类 AbstractMap<K,​V>
        Résultat une vue d'ensemble des clés contenues dans cette map
      • 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érationsaddou addAll操作。
        Spécifié par :
        values在界面 Map<K,​V>
        Remplace :
        values在课堂上 AbstractMap<K,​V>
        Résultat une vue des valeurs contenues dans cette map
      • 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érationsaddou addAll操作。
        Spécifié par :
        entrySet在界面 Map<K,​V>
        Résultat : une vue Set des mappages contenus dans cette carte
      • 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 renvoie

        null, 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-valeursMap<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ée
        mappingFunction- 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. Exceptions
        ConcurrentModificationException- 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ée
        remappingFunction- 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. Exceptions
        ConcurrentModificationException- 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 :
           map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg)) 
        (La méthodemerge()est généralement plus pratique pour ce type d'usage.) Si la fonction de remappage renvoie

        null, 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 leverConcurrentModificationException.

        Specified by:
        compute在界面 Map<K,​V>
        Paramètres
        key- clé à laquelle la valeur spécifiée est associée
        remappingFunction- 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. Exceptions
        ConcurrentModificationException- 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 renvoienull, 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 leverConcurrentModificationException.

        Specified by:
        merge在界面 Map<K,​V>
        Paramètres
        key- clé à laquelle la valeur de résultat est associée
        value- 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é. Exceptions
        ConcurrentModificationException- si la fonction de remappage modifie ce mappage
      • clone

        public Object clone()
        Renvoie une copie superficielle de cette instance deHashMap: les clés et les valeurs elles-mêmes ne sont pas clonées.
        Remplace :
        clone类 AbstractMap<K,​V>
        Résultat : copie superficielle de cette carte. Voir aussi :
        Cloneable