logo

Java HashSet

Йерархия на класове на Java HashSet

Класът 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