Java HashSet
Вступление
Набор - это Коллекция, которая не может содержать повторяющиеся элементы. Моделирует математический набор абстракций. HashSet расширяет AbstractSet и реализует интерфейс Set. Он создает коллекцию, которая использует хеш-таблицу для хранения. Хеш-таблица хранит информацию с помощью механизма, называемого хэшированием. При хешировании информационное содержимое ключа используется для определения уникального значения, называемого его хеш-кодом. Хеш-код затем используется в качестве индекса, в котором хранятся данные, связанные с ключом. Преобразование ключа в его хеш-код выполняется автоматически.
Когда вы помещаете объект в Hashset, он использует значение хеш-кода объекта, чтобы определить, куда поместить объект в Set. Но он также сравнивает хеш-код объекта с хеш-кодом всех других объектов в хэш-наборе, и, если нет соответствующего хеш-кода, HashSet предполагает, что этот новый объект не является дубликатом. HashSet находит соответствующий хеш-код для двух объектов. один, который вы вставляете, и один уже в наборе - HashSet затем вызовет один из методов equals () объекта, чтобы увидеть, действительно ли эти объекты, соответствующие хэш-коду, равны. И если они равны, HashSet знает, что объект, который вы пытаетесь добавить, является дубликатом чего-то в наборе, поэтому добавление не происходит.
HashSet - это несортированный, неупорядоченный набор. Он использует хеш-код вставляемого объекта, поэтому, чем эффективнее ваша реализация hashCode (), тем выше производительность доступа. Используйте этот класс, когда вам нужна коллекция без дубликатов, и вы не заботитесь о порядке, когда просматриваете его.
HashSet () // Конструктор по умолчанию
HashSet (Collection c) // Создает HashSet из коллекции c
HashSet (intacity) // создает HashSet с указанием начальной емкости
HashSet (intacity, float loadFactor) // Это создает HashSet с емкостью и коэффициентом загрузки
Выбор слишком высокой начальной емкости может привести к потере пространства и времени. С другой стороны, выбор начальной емкости, которая слишком мала, приводит к бесполезной трате времени на копирование структуры данных каждый раз, когда она вынуждена увеличивать свою емкость. Если вы не укажете начальную емкость, по умолчанию будет 16.
У класса HashSet есть еще один параметр настройки, называемый коэффициентом загрузки. Размер HashSet увеличивается в соответствии с определенным коэффициентом загрузки или двойным размером по умолчанию.
Методы HashSet
метод | Цель |
---|---|
public boolean add (Object o) | Добавляет объект в HashSet, если он уже отсутствует в HashSet. |
public boolean удалить (Объект o) | Удаляет объект из HashSet, если он найден в HashSet. |
public boolean содержит (объект o) | Возвращает true, если объект найден, иначе возвращает false |
public boolean isEmpty () | Возвращает true, если HashSet пуст, иначе возвращает false |
public int size () | Возвращает количество элементов в HashSet |
Java-код: перейти к редактору
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
// Adding element to HashSet
hs.add("M");
hs.add("B");
hs.add("C");
hs.add("A");
hs.add("M");
hs.add("X");
System.out.println("Size of HashSet=" + hs.size());
System.out.println("Original HashSet:" + hs);
System.out.println("Removing A from HashSet: " + hs.remove("A"));
System.out.println("Trying to Remove Z which is not present: "
+ hs.remove("Z"));
System.out.println("Checking if M is present=" + hs.contains("M"));
System.out.println("Updated HashSet: " + hs);
}
}
Выход:
Резюме:
- HashSet предоставляет коллекцию уникальных объектов
- HashSet - несортированный, неупорядоченный и неиндексированный класс коллекции на основе
- HashSet может иметь только один элемент Null
Редактор кода Java:
Предыдущий: Java LinkedList Class
Далее: Java TreeSet
Новый контент: Composer: менеджер зависимостей для PHP , R программирования