Java HashSet
Klasa Java HashSet koristi se za stvaranje zbirke koja za pohranu koristi hash tablicu. Nasljeđuje klasu AbstractSet i implementira Set sučelje.
Važne točke o Java HashSet klasi su:
- HashSet pohranjuje elemente pomoću mehanizma tzv raspršivanje.
- HashSet sadrži samo jedinstvene elemente.
- HashSet dopušta nultu vrijednost.
- Klasa HashSet nije sinkronizirana.
- HashSet ne održava redoslijed umetanja. Ovdje se elementi ubacuju na temelju njihovog hashcode-a.
- HashSet je najbolji pristup za operacije pretraživanja.
- Početni zadani kapacitet HashSeta je 16, a faktor opterećenja je 0,75.
Razlika između popisa i skupa
Popis može sadržavati duplicirane elemente dok Set sadrži samo jedinstvene elemente.
Hijerarhija klase HashSet
Klasa HashSet proširuje klasu AbstractSet koja implementira Set sučelje. Sučelje Set nasljeđuje sučelja Collection i Iterable u hijerarhijskom redu.
Deklaracija klase HashSet
Pogledajmo deklaraciju za klasu java.util.HashSet.
public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
Konstruktori Java HashSet klase
| S N | Konstruktor | Opis |
|---|---|---|
| 1) | HashSet() | Koristi se za konstrukciju zadanog HashSeta. |
| 2) | HashSet (int kapacitet) | Koristi se za inicijalizaciju kapaciteta hash skupa na zadani kapacitet cjelobrojne vrijednosti. Kapacitet automatski raste kako se elementi dodaju u HashSet. |
| 3) | HashSet(int kapacitet, float loadfactor) | Koristi se za inicijalizaciju kapaciteta hash skupa na zadani kapacitet cjelobrojne vrijednosti i navedeni faktor opterećenja. |
| 4) | HashSet(kolekcija c) | Koristi se za inicijalizaciju hash skupa pomoću elemenata zbirke c. |
Metode Java HashSet klase
Različite metode Java HashSet klase su sljedeće:
| S N | Modifikator i vrsta | metoda | Opis |
|---|---|---|---|
| 1) | Booleov | dodati (E e) | Koristi se za dodavanje određenog elementa ovom skupu ako već nije prisutan. |
| 2) | poništiti | čisto() | Koristi se za uklanjanje svih elemenata iz skupa. |
| 3) | objekt | klon() | Koristi se za vraćanje plitke kopije ove instance HashSeta: sami elementi nisu klonirani. |
| 4) | Booleov | sadrži (objekt o) | Koristi se za vraćanje true ako ovaj skup sadrži navedeni element. |
| 5) | Booleov | prazno je() | Koristi se za vraćanje true ako ovaj skup ne sadrži elemente. |
| 6) | Iterator | iterator() | Koristi se za vraćanje iteratora preko elemenata u ovom skupu. |
| 7) | Booleov | ukloniti (objekt o) | Koristi se za uklanjanje navedenog elementa iz ovog skupa ako je prisutan. |
| 8) | int | veličina() | Koristi se za vraćanje broja elemenata u skupu. |
| 9) | Spliterator | razdjelnik() | Koristi se za stvaranje kasnog povezivanja i brzog spajanja nad elementima u skupu. |
Primjer Java HashSeta
Pogledajmo jednostavan primjer HashSeta. Primijetite, elementi se ponavljaju u neuređenoj kolekciji.
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
Primjer Java HashSeta koji zanemaruje duplikate elemenata
U ovom primjeru vidimo da HashSet ne dopušta duplicirane elemente.
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 primjer za uklanjanje elemenata
Ovdje vidimo različite načine uklanjanja elementa.
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 iz druge kolekcije
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 primjer: knjiga
Pogledajmo primjer HashSeta gdje dodajemo knjige u skup i ispisujemo sve knjige.
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); } } } Izlaz:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Možda ti se također svidi:
Rad HashSeta u Javi