Класът Java HashSet се използва за създаване на колекция, която използва хеш таблица за съхранение. Той наследява класа AbstractSet и имплементира интерфейс Set.
Важните точки за класа Java HashSet са:
- HashSet съхранява елементите, като използва механизъм, наречен хеширане.
- HashSet съдържа само уникални елементи.
- HashSet позволява нулева стойност.
- Класът HashSet не е синхронизиран.
- HashSet не поддържа реда за вмъкване. Тук елементите се вмъкват въз основа на техния хешкод.
- HashSet е най-добрият подход за операции за търсене.
- Първоначалният капацитет по подразбиране на HashSet е 16, а коефициентът на натоварване е 0,75.
Разлика между списък и набор
Списъкът може да съдържа дублирани елементи, докато Set съдържа само уникални елементи.
Йерархия на класа HashSet
Класът HashSet разширява класа AbstractSet, който имплементира интерфейс Set. Интерфейсът Set наследява Collection и Iterable интерфейси в йерархичен ред.
Декларация на клас HashSet
Нека да видим декларацията за класа java.util.HashSet.
public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
Конструктори на Java HashSet клас
SN | Конструктор | Описание |
---|---|---|
1) | HashSet() | Използва се за конструиране на HashSet по подразбиране. |
2) | HashSet(int капацитет) | Използва се за инициализиране на капацитета на хеш набора до дадения капацитет на целочислена стойност. Капацитетът нараства автоматично с добавянето на елементи към HashSet. |
3) | HashSet(int капацитет, float loadFactor) | Използва се за инициализиране на капацитета на хеш набора към дадения капацитет на целочислена стойност и зададения фактор на натоварване. |
4) | HashSet(Колекция c) | Използва се за инициализиране на хеш набора чрез използване на елементите на колекцията c. |
Методи на клас Java HashSet
Различните методи на клас Java HashSet са както следва:
SN | Модификатор и тип | Метод | Описание |
---|---|---|---|
1) | булево | добавям (E e) | Използва се за добавяне на посочения елемент към този набор, ако той вече не присъства. |
2) | невалиден | ясно() | Използва се за премахване на всички елементи от комплекта. |
3) | обект | клонинг() | Използва се за връщане на плитко копие на този екземпляр на HashSet: самите елементи не са клонирани. |
4) | булево | съдържа (обект o) | Използва се за връщане на true, ако този набор съдържа посочения елемент. |
5) | булево | празно е() | Използва се за връщане на true, ако този набор не съдържа елементи. |
6) | Итератор | итератор() | Използва се за връщане на итератор върху елементите в този набор. |
7) | булево | премахване (обект o) | Използва се за премахване на посочения елемент от този набор, ако той присъства. |
8) | вътр | размер () | Използва се за връщане на броя на елементите в набора. |
9) | Сплитератор | сплитератор() | Използва се за създаване на късно свързващ и бърз сплитератор над елементите в комплекта. |
Пример за Java HashSet
Нека видим прост пример за HashSet. Забележете, елементите се повтарят в неподредена колекция.
import java.util.*; class HashSet1{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); set.add('Four'); set.add('Five'); Iterator i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Five One Four Two Three
Пример за Java HashSet, игнориращ дублирани елементи
В този пример виждаме, че HashSet не позволява дублиращи се елементи.
import java.util.*; class HashSet2{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Ajay Vijay Ravi
Java HashSet пример за премахване на елементи
Тук виждаме различни начини за премахване на елемент.
import java.util.*; class HashSet3{ public static void main(String args[]){ HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Arun'); set.add('Sumit'); System.out.println('An initial list of elements: '+set); //Removing specific element from HashSet set.remove('Ravi'); System.out.println('After invoking remove(object) method: '+set); HashSet set1=new HashSet(); set1.add('Ajay'); set1.add('Gaurav'); set.addAll(set1); System.out.println('Updated List: '+set); //Removing all the new elements from HashSet set.removeAll(set1); System.out.println('After invoking removeAll() method: '+set); //Removing elements on the basis of specified condition set.removeIf(str->str.contains('Vijay')); System.out.println('After invoking removeIf() method: '+set); //Removing all the elements available in the set set.clear(); System.out.println('After invoking clear() method: '+set); } }
An initial list of elements: [Vijay, Ravi, Arun, Sumit] After invoking remove(object) method: [Vijay, Arun, Sumit] Updated List: [Vijay, Arun, Gaurav, Sumit, Ajay] After invoking removeAll() method: [Vijay, Arun, Sumit] After invoking removeIf() method: [Arun, Sumit] After invoking clear() method: []
Java HashSet от друга колекция
import java.util.*; class HashSet4{ public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('Ravi'); list.add('Vijay'); list.add('Ajay'); HashSet set=new HashSet(list); set.add('Gaurav'); Iterator i=set.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Vijay Ravi Gaurav Ajay
Пример за Java HashSet: Книга
Нека да видим пример за HashSet, където добавяме книги за набор и отпечатваме всички книги.
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class HashSetExample { public static void main(String[] args) { HashSet set=new HashSet(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to HashSet set.add(b1); set.add(b2); set.add(b3); //Traversing HashSet for(Book b:set){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
Изход:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Може да харесате още:
Работа на HashSet в Java