Det HashMap og HashSet i Java er de mest populære samlingsklasser. Begge bruges til datastrukturen. Følgende tabel beskriver forskellen mellem HashMap og HashSet:
Basis | HashMap | HashSet |
---|---|---|
Definition | Java HashMap er en hash-tabelbaseret implementering af kortgrænsefladen. | HashSet er et sæt. Det opretter en samling, der bruger en hash-tabel til opbevaring. |
Implementering | HashMap implementerer Kort, kan klones og serialiseres grænseflade es. | HashSet implementerer Sæt, kan klones, serialiseres, gentages og Kollektion grænseflader. |
Butikker | I HashMap gemmer vi en nøgleværdi-par . Det opretholder kortlægningen af nøgle og værdi. | I HashSet gemmer vi genstande . |
Dublerede værdier | Det tillader det ikke dublerede nøgler , men duplikerede værdier er tilladt . | Det tillader det ikke duplikerede værdier . |
Nulværdier | Den kan indeholde en enkelt nul-nøgle og flere nulværdier . | Det kan indeholde en enkelt nulværdi . |
Metode til indsættelse | HashMap bruger sætte() metode til at tilføje elementerne i HashMap. | HashSet bruger tilføje() metode til at tilføje elementer i HashSet. |
Ydeevne | HashMap er hurtigere/ end HashSet, fordi værdier er forbundet med en unik nøgle. | HashSet er langsommere end HashMap, fordi medlemsobjektet bruges til at beregne hashkodeværdi, som kan være den samme for to objekter. |
Antallet af objekter | Kun en objektet oprettes under tilføjelsesoperationen. | Der er to objekter oprettet under put operation, en for nøgle og en til værdi . |
Opbevaringsmekanisme | HashMap bruger internt hashing at opbevare genstande. | HashSet bruger internt en HashMap objekt til at opbevare genstande. |
Bruger | Foretrækker altid, når vi ikke vedligeholder unikhed . | Det bruges, når vi skal vedligeholde unikhed af data. |
Eksempel | {a->4, b->9, c->5} Hvor a, b, c er nøgler og 4, 9, 5 er værdier forbundet med nøgle. | {6, 43, 2, 90, 4} Det betegner et sæt. |
Lad os forstå forskellene gennem programmer.
Eksempel på HashMap
I det følgende eksempel, når vi tilføjer et dubletelement med den samme nøgle og en anden værdi, erstattes den forrige værdi af nøglen med den nye værdi.
Når vi tilføjer et dubletelement med samme nøgle og samme værdi, lagres nøgleværdi-parret ikke anden 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); } }
Produktion:
Eksempel på HashSet
I det følgende eksempel kan vi se, at de duplikerede værdier ikke lagres i HashSet, og null-værdien lagres kun é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); } }
Produktion: