模块  java.base
Paquetage java.util

Class HashSet<E>

  • Paramètres de type
    E- Type des éléments maintenus par cet ensemble. Toutes les interfaces implémentées
    Serializable , Cloneable , Iterable<E> , Collection<E> , Set<E>
    Sous-classes directes connues :
    JobStateReasons , LinkedHashSet

    public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, Serializable
    Cette classe implémenteSetl'interface, avec un support par une table de hachage (en fait desHashMapinstances). Elle ne garantit pas l'ordre d'itération de l'ensemble. En particulier, elle ne garantit pas que cet ordre reste constant dans le temps. Cette classe autorisenullles éléments. Cette classe offre des performances en temps constant pour les opérations de base (

    add , remove , contains和size), en supposant que la fonction de hachage disperse correctement les éléments dans les buckets. L'itération de cet ensemble demande un temps proportionnel à la somme de la taille de l'instanceHashSet(nombre d'éléments) et de la « capacité » de l'instanceHashMapsous-jacente (nombre de buckets). Donc, si les performances d'itération comptent, évitez de fixer une capacité initiale trop élevée (ou un facteur de charge trop bas).

    Notez que cette implémentation n'est pas synchronisée. Si plusieurs threads accèdent simultanément à un hash set et qu'au moins un thread le modifie, la synchronisation doit se faire en externe. On y parvient généralement en synchronisant sur un objet qui encapsule naturellement l'ensemble. Si un tel objet n'existe pas, utilisez la méthodeCollections.synchronizedSetpour « envelopper » l'ensemble. Faites-le de préférence à la création, pour éviter tout accès non synchronisé accidentel à l'ensemble :

      Set s = Collections.synchronizedSet(new HashSet(...)); 

    L'itérateur renvoyé par la méthodeiteratorde cette classe est en échec rapide : si l'ensemble est modifié à tout moment après la création de l'itérateur, sauf via la méthoderemovepropre de l'itérateur, celui-ci lèveConcurrentModificationException. Ainsi, face à une modification concurrente, l'itérateur échoue vite et proprement, au lieu de risquer un comportement arbitraire et non déterministe à un moment indéterminé.

    Veuillez noter que le comportement de défaillance rapide des itérateurs n'est pas garanti. En général, en présence de modifications concurrentes non synchronisées, aucune garantie stricte n'est possible. Les itérateurs à défaillance rapide lèvent l'exception de leur mieux.ConcurrentModificationExceptionau mieux. Donc, écrire un programme qui dépend de cette exception pour garantir sa correction est une erreur : le comportement d'échec rapide des itérateurs sert uniquement à détecter des bogues.

    Cette classe est membre du Java Collections Framework.

    Depuis la version : 1.2 Voir aussi :
    Collection,Set,TreeSet,HashMap, Serialized Form
    • 构造方法摘要

      Constructeur Description
      HashSet()
      Construit un nouvel ensemble vide ; l'instanceHashMapsous-jacente a une capacité initiale par défaut (16) et un facteur de charge par défaut (0.75).
      HashSet​(int initialCapacity)
      Construit un nouvel ensemble vide ; l'instanceHashMapsous-jacente a la capacité initiale spécifiée et le facteur de charge par défaut (0.75).
      HashSet​(int initialCapacity, float loadFactor)
      Construit un nouvel ensemble vide ; l'instanceHashMapsous-jacente a la capacité initiale spécifiée et le facteur de charge spécifié.
      HashSet​(Collection<? extends E> c)
      Construit un nouvel ensemble contenant les éléments de la collection spécifiée.
    • 构造方法详细信息

      • HashSet

        public HashSet()
        Construire un nouvel ensemble vide ; pris en chargeHashMapL'instance possède une capacité initiale par défaut (16) et un facteur de charge (0.75).
      • HashSet

        public HashSet​(Collection<? extends E> c)
        Construit un nouvel ensemble contenant les éléments de l'ensemble spécifié.HashMapCréé avec le facteur de charge par défaut (0.75) et une capacité initiale suffisante pour contenir les éléments de la collection spécifiée.
        Paramètres
        c - cException lors de l'ajout d'un élément à cette collection
        NullPointerException- Si la collection spécifiée est null
      • HashSet

        public HashSet​(int initialCapacity,
                       float loadFactor)
        Construire un nouvel ensemble vide ; solution de repliHashMapL'instance possède la capacité initiale spécifiée et le facteur de charge spécifié.
        Paramètres
        initialCapacity- Capacité initiale de la table de hachage
        loadFactor- Anomalie du facteur de charge de la table de hachage
        IllegalArgumentException- Si la capacité initiale est inférieure à zéro, ou si le facteur de charge n'est pas positif
      • HashSet

        public HashSet​(int initialCapacity)
        Construire un nouvel ensemble vide ; pris en chargeHashMapL'instance possède la capacité initiale spécifiée et le facteur de charge par défaut (0,75).
        Paramètres
        initialCapacity- Capacité initiale de la table de hachage : exception
        IllegalArgumentException- Si la capacité initiale est inférieure à zéro
    • 方法详细信息

      • size

        public int size()
        Retourne le nombre d'éléments de cette collection (cardinalité).
        Specified by:
        size在界面 Collection<E>
        Specified by:
        size在界面 Set<E>
        Résultat Le nombre d'éléments de cette collection (cardinalité)
      • isEmpty

        public boolean isEmpty()
        Retourne true si cette collection ne contient aucun élémenttrue 。
        Specified by:
        isEmpty在界面 Collection<E>
        Specified by:
        isEmpty在界面 Set<E>
        Remplace :
        isEmpty类 AbstractCollection<E>
        Résultat
        trueSi cette collection ne contient aucun élément
      • contains

        public boolean contains​(Object o)
        Retourne true si ce set contient l'élément spécifiétrue. Plus formellement, retourne truetruesi et seulement si ce set contient un élémente ,使得Objects.equals(o, e) 。
        Specified by:
        contains在界面 Collection<E>
        Specified by:
        contains在界面 Set<E>
        Remplace :
        contains在类 AbstractCollection<E>
        Paramètres
        o- Élément dont la présence dans cet ensemble doit être testée Résultat
        truetrue si cet ensemble contient l'élément spécifié
      • add

        public boolean add​(E e)
        Ajoute l'élément spécifié à cet ensemble s'il n'est pas déjà présent. Plus formellement, ajoute l'élément spécifiéee à cet ensemble si l'ensemble ne contient aucun élémente2使得Objects.equals(e, e2). Si cet ensemble contient déjà l'élément, l'appel laisse l'ensemble inchangé et retournefalse 。
        Spécifié par :
        add在界面 Collection<E>
        Spécifié par :
        add在界面 Set<E>
        Redéfini :
        add在类 AbstractCollection<E>
        Paramètres
        e- Élément à ajouter à cet ensemble Résultat
        truetrue si cet ensemble ne contenait pas déjà l'élément spécifié
      • remove

        public boolean remove​(Object o)
        Supprime l'élément spécifié de cet ensemble s'il est présent. Plus formellement, supprime un élémente ,使得Objects.equals(o, e), si cet ensemble contient un tel élément. Retourne true si cet ensemble contenait l'élémenttrue(ou de manière équivalente, si cet ensemble a changé à la suite de l'appel). (L'ensemble ne contiendra plus cet élément une fois l'appel terminé.)
        Spécifié par :
        remove在界面 Collection<E>
        Spécifié par :
        remove在界面 Set<E>
        Redéfini :
        remove类 AbstractCollection<E>
        Paramètres
        o- Objet à supprimer de cet ensemble, s'il est présent Résultat
        truetrue si cet ensemble contenait l'élément spécifié
      • clear

        public void clear()
        Supprime tous les éléments de cet ensemble. L'ensemble sera vide après le retour de cet appel.
        Spécifié par :
        clear在界面 Collection<E>
        Spécifié par :
        clear在界面 Set<E>
        Redéfini :
        clear类 AbstractCollection<E>
      • clone

        public Object clone()
        Retourne une copie superficielle de cetteHashSetinstance : les éléments eux-mêmes ne sont pas clonés.
        Substitution :
        clone类 Object
        Résultat Une copie superficielle de cette collection Voir aussi :
        Cloneable