Класс 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()); } }