The HashMap a HashSet v jazyku Java sú najobľúbenejšie triedy Collection. Obidve sa používajú na dátovú štruktúru. Nasledujúca tabuľka popisuje rozdiel medzi HashMap a HashSet:
Základ | HashMap | HashSet |
---|---|---|
Definícia | Java HashMap je implementácia rozhrania mapy založená na hašovacej tabuľke. | HashSet je sada. Vytvára kolekciu, ktorá používa na uloženie hašovaciu tabuľku. |
Implementácia | implementuje HashMap Mapové, klonovateľné a serializovateľné rozhranie es. | Implementuje HashSet Nastaviť, klonovať, serializovať, opakovať a Zbierka rozhrania. |
Obchody | V HashMap ukladáme a pár kľúč – hodnota . Udržuje mapovanie kľúča a hodnoty. | V HashSet ukladáme predmety . |
Duplicitné hodnoty | To nepripúšťa duplicitné kľúče , ale duplicitné hodnoty sú povolený . | To nepripúšťa duplicitné hodnoty . |
Nulové hodnoty | Môže obsahovať a jediný nulový kľúč a viacero nulových hodnôt . | Môže obsahovať jednu nulovú hodnotu . |
Spôsob vkladania | HashMap používa dať () metóda na pridanie prvkov do HashMap. | HashSet používa pridať () metóda na pridanie prvkov do HashSet. |
Výkon | HashMap je rýchlejšie/ než HashSet, pretože hodnoty sú spojené s jedinečným kľúčom. | HashSet je pomalšie než HashMap, pretože členský objekt sa používa na výpočet hodnoty hashcode, ktorá môže byť rovnaká pre dva objekty. |
Počet objektov | Iba jeden objekt sa vytvorí počas operácie pridávania. | Existujú dva objekty vytvorené počas operácie put, jeden pre kľúč a jeden pre hodnotu . |
Skladovací mechanizmus | HashMap interne používa hašovanie na ukladanie predmetov. | HashSet interne používa a HashMap objekt na uloženie predmetov. |
Využitie | Vždy radšej, keď neudržiavame jedinečnosť . | Používa sa, keď potrebujeme udržiavať jedinečnosť údajov. |
Príklad | {a->4, b->9, c->5}{101} Kde a, b, c sú kľúče a 4, 9, 5 sú hodnoty spojené s kľúčom. | {6, 43, 2, 90, 4} Označuje súbor. |
Poďme pochopiť rozdiely prostredníctvom programov.
Príklad HashMap
Keď v nasledujúcom príklade pridáme duplicitný prvok s rovnakým kľúčom a inou hodnotou, predchádzajúca hodnota kľúča sa nahradí novou hodnotou.
Keď pridáme duplicitný prvok s rovnakým kľúčom a rovnakou hodnotou, pár kľúč – hodnota sa druhýkrát neuloží.
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); } }
Výkon:
Príklad HashSet
V nasledujúcom príklade vidíme, že duplicitné hodnoty sa neukladajú do HashSet a nulová hodnota sa ukladá iba raz.
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); } }
Výkon: