Класс Java HashSet
Класс HashSet расширяет AbstractSet и реализует заданный интерфейс. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы которого не имеют особого порядка. В HashSet для хранения используется хеш-таблица. Хэш-таблица хранит информацию с помощью механизма, называемого хешированием. В простом случае хеширование - это способ присвоения уникального кода для любой переменной / объекта после применения любой формулы / алгоритма по его свойствам. Функция хэша должна возвращать один и тот же хэш-код каждый раз, когда функция применяется на одинаковых или равных объектах.
// Создает хэш-набор и инициализирует емкость. HashSet(capacity)
HashSet(capacity,fillRatio)
Создает хэш-набор и инициализирует как коэффициент емкости, так и коэффициент заполнения хэш-набора из его аргументов. Коэффициент заполнения должен быть от 0,0 до 1,0. Когда количество элементов больше емкости, емкость хэш-набора умножается на коэффициент заполнения, а набор хэшей расширяется.
HashSet содержит набор объектов, но позволяет легко и быстро определить, находится ли объект в наборе или нет. Он делает это, внутренне управляя массивом и сохраняя объект, используя индекс, который вычисляется из хэш-кода объекта. Существуют различные реализации наборов. Некоторые делают операции ввода и поиска сверхбыстрыми элементами хэширования. Однако это означает, что порядок, в котором были добавлены элементы, теряется. Другие реализации сохраняют добавленный заказ за счет более медленного времени работы.

HashSet не дает никаких гарантий относительно порядка итерации набора; в частности, он не гарантирует, что порядок будет оставаться постоянным с течением времени. В общем, наборы, реализованные с использованием хэширования, не имеют четко определенного порядка. Поскольку для каждого объекта вычисляется значение хеш-функции, это хеш-значение определяет индекс массива конкретного объекта в контейнере. Таким образом, порядок вставленных элементов, естественно, не сохраняется. Если вы хотите сохранить порядок вставки с помощью HashSet, а не использовать LinkedHashSet.
Следующая программа Java иллюстрирует несколько методов, поддерживаемых этой базой данных HashSet.
import Java.util.*;
class TestClass
{
public static void main (String[] args) throws Java.lang.Exception
{
// создать объект HashSet
HashSet days=new HashSet();
// добавление элементов в HashSet
days.add("Sunday");
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
// Итерация через HashSet
Iterator itr=days.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
// удалить одну запись из hashset
days.remove("Monday");
System.out.println(days);
// поиск в Hashset
if(days.contains("Saturday"))
System.out.println("Item Found");
else
System.out.println("Item Not Found");
// Удаление всех элементов из Hashset
days.clear();
// Размер хешета
System.out.println("Size of the HashSet: "+days.size());
}
}
