De HashMap og HashSet i Java er de mest populære samlingsklassene. Begge brukes til datastrukturen. Følgende tabell beskriver forskjellen mellom HashMap og HashSet:
Basis | HashMap | HashSet |
---|---|---|
Definisjon | Java HashMap er en hashtabellbasert implementering av kartgrensesnitt. | HashSet er et sett. Den lager en samling som bruker en hash-tabell for lagring. |
Gjennomføring | HashMap implementerer Kart, kloningsbar og serialiserbar grensesnitt es. | HashSet implementerer Sett, Klonbar, Serialiserbar, Itererbar og Samling grensesnitt. |
Butikker | I HashMap lagrer vi en nøkkel-verdi-par . Den opprettholder kartleggingen av nøkkel og verdi. | I HashSet lagrer vi gjenstander . |
Dupliserte verdier | Det tillater ikke dupliserte nøkler , men dupliserte verdier er tillatt . | Det tillater ikke dupliserte verdier . |
Nullverdier | Den kan inneholde en enkelt null nøkkel og flere nullverdier . | Det kan inneholde en enkelt nullverdi . |
Metode for innsetting | HashMap bruker sette() metode for å legge til elementene i HashMap. | HashSet bruker Legg til() metode for å legge til elementer i HashSet. |
Opptreden | HashMap er raskere/ enn HashSet fordi verdier er knyttet til en unik nøkkel. | HashSet er langsommere enn HashMap fordi medlemsobjektet brukes til å beregne hashkodeverdi, som kan være det samme for to objekter. |
Antall objekter | Bare en objektet opprettes under add-operasjonen. | Det er to objekter opprettet under put operasjon, en for nøkkel og en for verdi . |
Lagringsmekanisme | HashMap bruker internt hashing å lagre gjenstander. | HashSet bruker internt en HashMap gjenstand for å lagre gjenstander. |
Bruker | Foretrekker alltid når vi ikke vedlikeholder unikhet . | Den brukes når vi trenger å vedlikeholde unikhet av data. |
Eksempel | {a->4, b->9, c->5} Hvor a, b, c er nøkler og 4, 9, 5 er verdier knyttet til nøkkel. | {6, 43, 2, 90, 4} Det betegner et sett. |
La oss forstå forskjellene gjennom programmer.
Eksempel på HashMap
I det følgende eksempelet, når vi legger til et duplikatelement med samme nøkkel og annen verdi, erstattes den forrige verdien av nøkkelen med den nye verdien.
Når vi legger til et duplikatelement med samme nøkkel og samme verdi, lagres ikke nøkkelverdi-paret andre gang.
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); } }
Produksjon:
Eksempel på HashSet
I følgende eksempel kan vi se at de dupliserte verdiene ikke lagres i HashSet og nullverdien lagres bare én gang.
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); } }
Produksjon: