Класс HashSet


Класс HashSet в Java расширяет AbstractSet и реализует интерфейс Set. Он создает коллекцию, которая использует хеш-таблицу для хранения.

Хэш-таблица хранит информацию с помощью механизма, называемого хешированием. В хэшировании информационный контент ключа используется для определения уникального значения, называемого его хэш-кодом.

Хэш-код затем используется как индекс, в котором хранятся данные, связанные с ключом. Преобразование ключа в его хэш-код выполняется автоматически.

Конструкторы
Ниже приведен список конструкторов, предоставляемых классом HashSet.

№ Конструктор и описание
1 HashSet( )
Этот конструктор создает стандартный HashSet.
2 HashSet(Collection c)
Этот конструктор инициализирует хэш-набор, используя элементы коллекции c.
3 HashSet(int capacity)
Этот конструктор инициализирует емкость хэш-набора для заданной целочисленной емкости. Емкость растет автоматически по мере добавления элементов в HashSet.
4 HashSet(int capacity, float fillRatio)
Этот конструктор инициализирует как емкость, так и коэффициент заполнения (также называемый нагрузочной способностью) хэш-набора из его аргументов.
При этом отношение заполнения должно находиться в диапазоне от 0,0 до 1,0, и это определяет, как полный набор хэша, прежде чем его размер будет увеличен. В частности, когда количество элементов больше, чем емкость хеш-множества, умноженная на его коэффициент заполнения, хэш-набор расширяется.


Методы
Помимо методов, унаследованных от его родительских классов, HashSet определяет следующие методы:

№ и описание
1 boolean add(Object o)
Добавляет указанный элемент к этому набору, если он еще не присутствует.
2 void clear()
Удаляет все элементы из этого набора.
3 Object clone()
Возвращает мелкую копию этого экземпляра HashSet: сами элементы не клонируются.
4 boolean contains(Object o)
Возвращает true, если этот набор содержит указанный элемент.
5 boolean isEmpty()
Возвращает true, если этот набор не содержит элементов.
6 Iterator iterator()
Возвращает итератор по элементам этого набора.
7 boolean remove(Object o)
Удаляет указанный элемент из этого набора, если он присутствует.
8 int size()
Возвращает количество элементов в этом наборе (его количество элементов).


Пример
Следующая программа демонстрирует работу нескольких методов, поддерживаемых HashSet в Java:

import java.util.*;
public class HashSetDemo {

public static void main(String args[]) {
// Создаём HashSet
HashSet hs = new HashSet();

// Добавляем элементы к HashSet
hs.add("B");
hs.add("A");
hs.add("D");
hs.add("E");
hs.add("C");
hs.add("F");
System.out.println(hs);
}
}
Получим следующий результат:

[A, B, C, D, E, F]