The HashMap i HashSet u Javi su najpopularnije klase Collection. Oba se koriste za strukturu podataka. Sljedeća tablica opisuje razliku između HashMap i HashSet:
font gimp
Osnova | HashMap | HashSet |
---|---|---|
Definicija | Java HashMap je implementacija sučelja karte temeljena na hash tablici. | HashSet je skup. Stvara zbirku koja za pohranu koristi hash tablicu. |
Provedba | HashMap implementira Kartiranje, kloniranje i serijalizacija sučelje es. | HashSet implementira Postavljanje, kloniranje, serijalizacija, iteracija i Kolekcija sučelja. |
Trgovine | U HashMapu pohranjujemo a par ključ-vrijednost . Održava preslikavanje ključa i vrijednosti. | U HashSet-u pohranjujemo objekti . |
Duplicirane vrijednosti | Ne dopušta dupli ključevi , ali duplicirane vrijednosti su dozvoljeno . | Ne dopušta duplicirane vrijednosti . |
Nulte vrijednosti | Može sadržavati a jedan nulti ključ i višestruke nulte vrijednosti . | Može sadržavati jednu nultu vrijednost . |
Način umetanja | HashMap koristi staviti() metoda za dodavanje elemenata u HashMap. | HashSet koristi dodati() metoda za dodavanje elemenata u HashSet. |
Izvođenje | HashMap je brže/ nego HashSet jer su vrijednosti povezane s jedinstvenim ključem. | HashSet je sporije nego HashMap jer se objekt član koristi za izračun vrijednosti hashcodea, koja može biti ista za dva objekta. |
Broj objekata | Samo jedan objekt se stvara tijekom operacije dodavanja. | Tamo su dva objekti nastali tijekom operacije, jedan za ključ i jedan za vrijednost . |
Mehanizam za pohranu | HashMap interno koristi raspršivanje za pohranjivanje predmeta. | HashSet interno koristi a HashMap objekt za pohranjivanje objekata. |
Koristi | Uvijek radije kada ne održavamo jedinstvenost . | Koristi se kada trebamo održavati jedinstvenost podataka. |
Primjer | {a->4, b->9, c->5} Gdje a, b, c su ključevi i 4, 9, 5 su vrijednosti povezan s ključem. | {6, 43, 2, 90, 4} Označava skup. |
Shvatimo razlike kroz programe.
Primjer HashMapa
U sljedećem primjeru, kada dodamo duplikat elementa s istim ključem i različitom vrijednošću, tada se prethodna vrijednost ključa zamjenjuje novom vrijednošću.
Kada dodamo duplicirani element s istim ključem i istom vrijednošću, tada se par ključ-vrijednost ne pohranjuje drugi put.
import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } }
Izlaz:
Primjer HashSeta
U sljedećem primjeru možemo vidjeti da se duplicirane vrijednosti ne pohranjuju u HashSet i da se nulta vrijednost pohranjuje samo jednom.
import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } }
Izlaz: