módulo  java.base
paquete  java.util

Class HashSet<E>

  • tipo de parámetro
    ETipo de elementos que mantiene este conjunto
    Todas las interfaces implementadas
    Serializable , Cloneable , Iterable<E> , Collection<E> , Set<E>
    Subclases directas conocidas:
    JobStateReasons , LinkedHashSet

    public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, Serializable
    Esta clase implementaSetla interfaz, respaldada por una tabla hash (en realidad,HashMapuna instancia). No garantiza el orden de iteración de la colección; En particular, no garantiza que el orden permanezca constante con el tiempo. Esta clase permitenullelementos.

    Esta clase ofrece las operaciones básicas (rendimiento en tiempo constanteadd , remove , containsysize), asumiendo que la función hash dispersa los elementos correctamente entre los cubos. El tiempo necesario para iterar esta colección es proporcional aHashSetla suma del tamaño de la instancia (número de elementos) yHashMapla capacidad de la instancia de respaldo (número de cubos). Por lo tanto, si el rendimiento de la iteración es importante, es muy importante no establecer la capacidad inicial demasiado alta (o el factor de carga demasiado bajo).

    Tenga en cuenta que esta implementación no está sincronizada. Si varios hilos acceden al mismo tiempo al conjunto hash, y al menos un hilo lo modifica, entoncesdebesincronizarse externamente. Esto se logra normalmente sincronizando sobre algún objeto que encapsule naturalmente el conjunto. Si no existe tal objeto, entonces se debe usarCollections.synchronizedSetEl método «envuelve» elColección 。 Esto es mejor hacerlo en el momento de la creación, para evitar el acceso accidental no sincronizado al conjunto:

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

    de esta claseiteratorLos iteradores devueltos por los métodos sonde fallo rápido: Si el conjunto se modifica en cualquier momento después de crear el iterador, excepto a través de su propioremovemétodo, el iterador lanzaConcurrentModificationException 。 Por lo tanto, en caso de modificación concurrente, el iterador falla rápida y limpiamente, en lugar de arriesgarse a un comportamiento arbitrario, no determinista, en un momento futuro incierto.

    Tenga en cuenta que el comportamiento de fallo rápido de los iteradores no puede garantizarse, ya que, en general, no es posible hacer ninguna garantía estricta en presencia de modificaciones concurrentes no sincronizadas. Los iteradores de fallo rápido lanzan excepciones de mejor esfuerzo.ConcurrentModificationException 。 Por lo tanto, es incorrecto escribir programas que dependan de esta excepción para garantizar su corrección:El comportamiento de fallo rápido de los iteradores debe utilizarse solo para detectar errores.

    Esta clase esJava Collections Frameworkmiembro de.

    Desde la versión:
    1.2
    Véase también:
    Collection , Set , TreeSet , HashMap , Serialized Form
    • Detalles del constructor

      • HashSet

        public HashSet()
        Construye un nuevo conjunto vacío; AdmiteHashMapLa instancia tiene una capacidad inicial predeterminada (16) y un factor de carga predeterminado (0.75).
      • HashSet

        public HashSet​(Collection<? extends E> c)
        Construye un nuevo conjunto que contiene los elementos de la colección especificada. HashMapCreado con un factor de carga predeterminado (0.75) y una capacidad inicial suficiente para contener los elementos de la colección especificada.
        Parámetros
        c - cLa colección cuyos elementos se colocan en este conjunto
        Excepciones
        NullPointerException- Si la colección especificada es null
      • HashSet

        public HashSet​(int initialCapacity,
                       float loadFactor)
        Construye un nuevo conjunto vacío; de respaldoHashMapLa instancia tiene la capacidad inicial especificada y el factor de carga especificado.
        Parámetros
        initialCapacity- Capacidad inicial del mapa hash
        loadFactor- Factor de carga del mapa hash
        Excepciones
        IllegalArgumentExceptionSi la capacidad inicial es menor que cero, o el factor de carga no es positivo
      • HashSet

        public HashSet​(int initialCapacity)
        Construye un nuevo conjunto vacío; AdmiteHashMapLa instancia tiene la capacidad inicial especificada y un factor de carga predeterminado (0.75).
        Parámetros
        initialCapacity- Capacidad inicial de la tabla hash
        Excepciones
        IllegalArgumentException- Si la capacidad inicial es menor que cero
    • Detalles del método

      • size

        public int size()
        Devuelve el número de elementos de este conjunto (cardinalidad).
        Specified by:
        sizeEn la interfazCollection<E>
        Specified by:
        sizeEn la interfazSet<E>
        Resultado
        Número de elementos (cardinalidad) en este conjunto
      • isEmpty

        public boolean isEmpty()
        Si este conjunto no contiene ningún elemento, devuelvetrue 。
        Specified by:
        isEmptyEn la interfazCollection<E>
        Specified by:
        isEmptyEn la interfazSet<E>
        Sobrescribe:
        isEmptyClaseAbstractCollection<E>
        Resultado
        trueSi este conjunto no contiene ningún elemento
      • contains

        public boolean contains​(Object o)
        Si este conjunto contiene el elemento especificado, devuelvetrue 。 Más formalmente, devuelvetruesi y solo si este conjunto contiene el elementoe, tal queObjects.equals(o, e) 。
        Specified by:
        containsEn la interfazCollection<E>
        Specified by:
        containsEn la interfazSet<E>
        Sobrescribe:
        containsEn la claseAbstractCollection<E>
        Parámetros
        oEl elemento cuya presencia en esta colección se va a probar
        Resultado
        trueSi este conjunto contiene el elemento especificado
      • add

        public boolean add​(E e)
        Si el elemento especificado aún no está presente, lo añade a este conjunto. Más formalmente, el elemento especificadoeeste conjunto, si el conjunto no contiene el elementoe2tal queObjects.equals(e, e2) 。 Si este conjunto ya contiene el elemento, la llamada deja el conjunto sin cambios y devuelvefalse 。
        Specified by:
        addEn la interfazCollection<E>
        Specified by:
        addEn la interfazSet<E>
        Sobrescribe:
        addEn la claseAbstractCollection<E>
        Parámetros
        e- Elemento a agregar a este conjunto
        Resultado
        trueSi este conjunto no contiene todavía el elemento especificado
      • remove

        public boolean remove​(Object o)
        Si está presente, elimina el elemento especificado de este conjunto. Más formalmente, eliminar elementose, tal queObjects.equals(o, e), si esta colección contiene tales elementos. Si esta colección contiene elementos, devuelvetrue(o equivalentemente, si este conjunto se modifica debido a la llamada). (Una vez que la llamada regresa, el conjunto ya no contendrá este elemento.)
        Specified by:
        removeEn la interfazCollection<E>
        Specified by:
        removeEn la interfazSet<E>
        Sobrescribe:
        removeClaseAbstractCollection<E>
        Parámetros
        oEl objeto que se va a eliminar de esta colección, si existe
        Resultado
        trueSi el conjunto contiene el elemento especificado
      • clear

        public void clear()
        Elimina todos los elementos de este conjunto. Después de esta llamada, el conjunto quedará vacío.
        Specified by:
        clearEn la interfazCollection<E>
        Specified by:
        clearEn la interfazSet<E>
        Sobrescribe:
        clearClaseAbstractCollection<E>
      • clone

        public Object clone()
        Devuelve esteHashSetCopia superficial de la instancia: los elementos en sí no se clonan.
        Sobrescribe:
        cloneClaseObject
        Resultado
        Copia superficial de este conjunto
        Véase también:
        Cloneable