模块  java.base
Пакет java.util

Class HashSet<E>

  • Параметры типа
    E- тип элементов, которые хранит это множество. Все реализованные интерфейсы
    Serializable , Cloneable , Iterable<E> , Collection<E> , Set<E>
    Известные прямые подклассы:
    JobStateReasons , LinkedHashSet

    public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, Serializable
    Этот класс реализуетSetинтерфейс и опирается на хеш-таблицу (фактически наHashMapэкземпляр). Он не гарантирует порядок итерации по множеству. В частности, он не гарантирует, что порядок останется неизменным со временем. Этот класс допускаетnullэлементы. Этот класс обеспечивает базовые операции (постоянное время выполнения

    add , remove , contains和size), предполагая, что хеш-функция правильно распределяет элементы по корзинам. Итерация по этому множеству требует времени, пропорционального сумме размераHashSetэкземпляра (количества элементов) и «ёмкости» (количества корзин) базовогоHashMapэкземпляра. Поэтому, если важна производительность итерации, не задавайте слишком высокую начальную ёмкость (или слишком низкий коэффициент загрузки).

    Обратите внимание, эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к хеш-набору и хотя бы один поток изменяет набор, необходима внешняя синхронизация. Обычно это делают через синхронизацию на каком-либо объекте, который естественно инкапсулирует набор. Если такого объекта нет, используйтеCollections.synchronizedSetМетод «оборачивает» коллекцию. Это лучше сделать при создании, чтобы предотвратить случайный несинхронизированный доступ к коллекции:

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

    Такого родаiteratorМетод возвращает итератор, который работает по принципу fail-fast: если после создания итератора множество изменяется любым способом, кроме как через собственные методы итератора,removeПосле метода итератор выбрасываетConcurrentModificationException。 Поэтому при конкурентном изменении итератор быстро и корректно завершается с ошибкой, а не рискует произвольным недетерминированным поведением в неопределённый момент в будущем.

    Обратите внимание, что поведение быстрого сбоя итератора не гарантируется, потому что при несинхронизированных параллельных изменениях жёсткие гарантии невозможны. Итератор с быстрым сбоем выбрасывает исключение по принципу best effort.ConcurrentModificationException。 Поэтому писать программу, зависящую от этого исключения для проверки корректности, ошибочно: быстрое поведение итератора при сбое служит только для обнаружения ошибок.

    Этот класс входит в Java Collections Framework.

    Доступно начиная с версии: 1.2. Смотрите также:
    Collection,Set,TreeSet,HashMap, Serialized Form
    • 构造方法摘要

      构造方法  
      构造器 Описание
      HashSet()
      Создаёт новое пустое множество; поддерживаетHashMapЭкземпляр имеет начальную ёмкость по умолчанию (16) и коэффициент загрузки (0.75).
      HashSet​(int initialCapacity)
      Создаёт новое пустое множество; поддерживаетHashMapЭкземпляр имеет указанную начальную ёмкость и коэффициент загрузки по умолчанию (0.75).
      HashSet​(int initialCapacity, float loadFactor)
      Создаёт новый пустой набор; поддерживаетHashMapэкземпляр с указанной начальной ёмкостью и указанным коэффициентом загрузки.
      HashSet​(Collection<? extends E> c)
      Создаёт новый набор, содержащий элементы указанной коллекции.
    • 构造方法详细信息

      • HashSet

        public HashSet()
        Создаёт новый пустой набор. ПоддерживающийHashMapэкземпляр имеет начальную ёмкость по умолчанию (16) и коэффициент загрузки (0.75).
      • HashSet

        public HashSet​(Collection<? extends E> c)
        Создаёт новый набор, содержащий элементы указанной коллекции.HashMapСоздаётся с коэффициентом загрузки по умолчанию (0.75) и начальной ёмкостью, достаточной для элементов указанной коллекции.
        Параметры
        c - cКоллекция, элементы которой помещаются в этот набор. Исключения
        NullPointerException- Если указанная коллекция равна null
      • HashSet

        public HashSet​(int initialCapacity,
                       float loadFactor)
        Создаёт новый пустой набор. ПоддерживающийHashMapэкземпляр имеет указанную начальную ёмкость и указанный коэффициент загрузки.
        Параметры
        initialCapacity- Начальная ёмкость хеш-таблицы
        loadFactor- Коэффициент загрузки хеш-таблицы. Исключения
        IllegalArgumentException- Если начальная ёмкость меньше нуля или коэффициент загрузки неположительный
      • HashSet

        public HashSet​(int initialCapacity)
        Создаёт новый пустой набор. ПоддерживающийHashMapэкземпляр имеет указанную начальную ёмкость и коэффициент загрузки по умолчанию (0.75).
        Параметры
        initialCapacity- Начальная ёмкость хеш-таблицы. Исключения
        IllegalArgumentException- Если начальная ёмкость меньше нуля
    • 方法详细信息

      • size

        public int size()
        Возвращает количество элементов в этой коллекции (мощность).
        Specified by:
        size在界面 Collection<E>
        Specified by:
        size在界面 Set<E>
        Результат количество элементов в этой коллекции (мощность)
      • isEmpty

        public boolean isEmpty()
        Возвращает true, если эта коллекция не содержит элементовtrue 。
        Specified by:
        isEmpty在界面 Collection<E>
        Specified by:
        isEmpty在界面 Set<E>
        Переопределяет:
        isEmpty类 AbstractCollection<E>
        Результат
        truetrue, если эта коллекция не содержит элементов
      • contains

        public boolean contains​(Object o)
        Возвращает true, если этот set содержит указанный элементtrue. Более формально, возвращает truetrueтогда и только тогда, когда этот set содержит элементe ,使得Objects.equals(o, e) 。
        Specified by:
        contains在界面 Collection<E>
        Specified by:
        contains在界面 Set<E>
        Переопределяет:
        contains在类 AbstractCollection<E>
        Параметры
        o- элемент, наличие которого в этой коллекции нужно проверить Результат
        truetrue, если эта set содержит указанный элемент
      • add

        public boolean add​(E e)
        Добавляет указанный элемент в эту коллекцию, если он ещё не присутствует. Точнее, добавляет указанный элементeв эту коллекцию, если set не содержит элементe2使得Objects.equals(e, e2). Если эта set уже содержит элемент, вызов оставляет set без изменений и возвращаетfalse 。
        Specified by:
        add在界面 Collection<E>
        Specified by:
        add在界面 Set<E>
        Переопределяет:
        add在类 AbstractCollection<E>
        Параметры
        e- элемент, который нужно добавить в эту коллекцию Результат
        truetrue, если эта коллекция ещё не содержала указанный элемент
      • remove

        public boolean remove​(Object o)
        Удаляет указанный элемент из этой коллекции, если он присутствует. Точнее, удаляет элементe ,使得Objects.equals(o, e), если эта коллекция содержит такой элемент. Возвращаетtrue(или эквивалентно, если коллекция изменилась в результате вызова). (После возврата из вызова коллекция не будет содержать этот элемент.)
        Specified by:
        remove在界面 Collection<E>
        Specified by:
        remove在界面 Set<E>
        Переопределяет:
        remove类 AbstractCollection<E>
        Параметры
        o- объект, который нужно удалить из этой коллекции, если он присутствует Результат
        truetrue, если коллекция содержала указанный элемент
      • clear

        public void clear()
        Удаляет все элементы из этой коллекции. После возврата из этого вызова коллекция будет пустой.
        Specified by:
        clear在界面 Collection<E>
        Specified by:
        clear在界面 Set<E>
        Переопределяет:
        clear类 AbstractCollection<E>
      • clone

        public Object clone()
        Возвращает поверхностную копию этогоHashSetэкземпляра: сам элемент не клонируется.
        Переопределяет:
        clone类 Object
        Результат: поверхностная копия этой коллекции. См. также:
        Cloneable
      • spliterator

        public Spliterator<E> spliterator()
        Создает late-binding и отказоустойчивыйSpliteratorитератор по элементам этой коллекции.

        SpliteratorСообщаетSpliterator.SIZEDиSpliterator.DISTINCT. Переопределяющие реализации должны документировать отчет о других значениях характеристик.

        Specified by:
        spliterator在界面 Collection<E>
        Specified by:
        spliterator在界面 Iterable<E>
        Specified by:
        spliterator在界面 Set<E>
        Результат: a
        Spliteratorпо элементам этой коллекции. Начиная с версии: 1.8