Trieda Java HashSet sa používa na vytvorenie kolekcie, ktorá používa hašovaciu tabuľku na ukladanie. Zdedí triedu AbstractSet a implementuje rozhranie Set.
Dôležité body o triede Java HashSet sú:
- HashSet ukladá prvky pomocou mechanizmu tzv hašovanie.
- HashSet obsahuje iba jedinečné prvky.
- HashSet umožňuje nulovú hodnotu.
- Trieda HashSet nie je synchronizovaná.
- HashSet neuchováva objednávku vloženia. Tu sa prvky vkladajú na základe ich hash kódu.
- HashSet je najlepší prístup pre operácie vyhľadávania.
- Počiatočná predvolená kapacita HashSet je 16 a faktor zaťaženia je 0,75.
Rozdiel medzi zoznamom a súborom
Zoznam môže obsahovať duplicitné prvky, zatiaľ čo Set obsahuje iba jedinečné prvky.
Hierarchia triedy HashSet
Trieda HashSet rozširuje triedu AbstractSet, ktorá implementuje rozhranie Set. Rozhranie Set dedí rozhrania Collection a Iterable v hierarchickom poradí.
Deklarácia triedy HashSet
Pozrime sa na deklaráciu pre triedu java.util.HashSet.
public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
Konštruktory triedy Java HashSet
SN | Konštruktér | Popis |
---|---|---|
1) | HashSet() | Používa sa na vytvorenie predvoleného HashSet. |
2) | HashSet (int kapacita) | Používa sa na inicializáciu kapacity množiny hash na danú kapacitu celej hodnoty. Kapacita sa automaticky zvyšuje s pridávaním prvkov do HashSet. |
3) | HashSet (int kapacita, float loadFactor) | Používa sa na inicializáciu kapacity množiny hash na danú kapacitu celej hodnoty a zadaný faktor zaťaženia. |
4) | HashSet (kolekcia c) | Používa sa na inicializáciu množiny hash pomocou prvkov kolekcie c. |
Metódy triedy Java HashSet
Rôzne metódy triedy Java HashSet sú nasledovné:
SN | Modifikátor a typ | Metóda | Popis |
---|---|---|---|
1) | boolovská hodnota | pridať (E e) | Používa sa na pridanie špecifikovaného prvku do tejto množiny, ak ešte nie je prítomný. |
2) | neplatné | jasný() | Používa sa na odstránenie všetkých prvkov zo sady. |
3) | objekt | klon() | Používa sa na vrátenie plytkej kópie tejto inštancie HashSet: samotné prvky nie sú klonované. |
4) | boolovská hodnota | obsahuje (Objekt o) | Používa sa na vrátenie true, ak táto množina obsahuje špecifikovaný prvok. |
5) | boolovská hodnota | je prázdny() | Používa sa na vrátenie true, ak táto množina neobsahuje žiadne prvky. |
6) | Iterátor | iterátor() | Používa sa na vrátenie iterátora nad prvkami v tejto množine. |
7) | boolovská hodnota | odstrániť (Objekt o) | Používa sa na odstránenie špecifikovaného prvku z tejto množiny, ak je prítomný. |
8) | int | veľkosť () | Používa sa na vrátenie počtu prvkov v množine. |
9) | Rozdeľovač | rozdeľovač() | Používa sa na vytvorenie neskoro viazaného a rýchleho rozdeľovača nad prvkami v súprave. |
Príklad Java HashSet
Pozrime sa na jednoduchý príklad HashSet. Všimnite si, že prvky sa opakujú v neusporiadanej kolekcii.
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
Príklad Java HashSet ignorujúci duplicitné prvky
V tomto príklade vidíme, že HashSet nepovoľuje duplicitné prvky.
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
Príklad Java HashSet na odstránenie prvkov
Tu vidíme rôzne spôsoby odstránenia prvku.
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 z inej kolekcie
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
Príklad Java HashSet: Kniha
Pozrime sa na príklad HashSet, kde pridávame knihy na nastavenie a tlačíme všetky knihy.
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); } } }
Výkon:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Tiež sa ti môže páčiť:
Fungovanie HashSet v Jave