A HashMap és HashSet Java nyelven a legnépszerűbb Collection osztályok. Mindkettőt az adatszerkezethez használják. Az alábbi táblázat a HashMap és a HashSet közötti különbséget írja le:
Alap | HashMap | HashSet |
---|---|---|
Meghatározás | A Java HashMap a Map interfész hash tábla alapú megvalósítása. | A HashSet egy készlet. Létrehoz egy gyűjteményt, amely egy hash táblát használ a tároláshoz. |
Végrehajtás | HashMap eszközök Térkép, klónozható és szerializálható interfész es. | HashSet eszközök Beállítás, klónozható, sorozható, iterálható és Gyűjtemény interfészek. |
Üzletek | A HashMapben tároljuk a kulcs-érték pár . Fenntartja a kulcs és az érték leképezését. | A HashSetben tároljuk tárgyakat . |
Ismétlődő értékek | Nem engedi duplikált kulcsok , de duplikált értékek vannak megengedett . | Nem engedi duplikált értékek . |
Null értékek | Tartalmazhat a egyetlen null kulcs és több null érték . | Tartalmazhat egyetlen null érték . |
A beillesztés módja | A HashMap a tesz() módszert az elemek hozzáadásához a HashMapben. | A HashSet a add() módszer elemek hozzáadásához a HashSetben. |
Teljesítmény | A HashMap az gyorsabb/ mint a HashSet, mert az értékek egyedi kulccsal vannak társítva. | A HashSet az lassabb mint a HashMap, mert a tagobjektumot a hashcode érték kiszámítására használják, ami két objektumnál azonos lehet. |
Az objektumok száma | Csak egy objektum jön létre a hozzáadási művelet során. | Vannak kettő put művelet során létrehozott objektumok, egy a kulcs egy pedig azért érték . |
Tárolási mechanizmus | A HashMap belsőleg használható kivonatolás tárgyak tárolására. | A HashSet belsőleg a HashMap objektum tárgyak tárolására. |
Felhasználások | Mindig előnyben részesítjük, ha nem karbantartjuk a egyediség . | Akkor használjuk, ha karban kell tartanunk a egyediség adatokról. |
Példa | {a->4, b->9, c->5} Ahol a, b, c vannak kulcsok és 4, 9, 5 vannak értékeket kulcshoz kapcsolódik. | {6, 43, 2, 90, 4} Egy halmazt jelöl. |
Értsük meg a különbségeket a programokon keresztül.
Példa a HashMap-re
A következő példában, ha ugyanazzal a kulccsal és eltérő értékű ismétlődő elemet adunk hozzá, akkor a kulcs korábbi értéke lecserélődik az új értékre.
k-nn algoritmus
Ha ugyanazzal a kulccsal és azonos értékű duplikált elemet adunk hozzá, akkor a kulcs-érték pár nem tárol másodszor.
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); } }
Kimenet:
Példa a HashSetre
A következő példában láthatjuk, hogy a duplikált értékek nem tárolódnak a HashSetben, és a null érték csak egyszer tárolódik.
logikai érték a karakterláncra
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); } }
Kimenet: