Forskellen mellem HashSet og HashMap
I denne artikel vil vi diskutere forskellene mellem HashSet- og HashMap-klasserne.
HashSet vs. HashMap
Forskelle:
HashSet | HashMap |
---|---|
HashSet-klassen implementerer Set-interfacet | HashMap-klassen implementerer Map-interfacet |
I HashSet gemmer vi objekter (elementer eller værdier), f.eks.g. Hvis vi har et HashSet af strengelementer, kan det afbilde et sæt af HashSet-elementer: {“Hello”, “Hi”, “Bye”, “Run”} | HashMap bruges til at lagre nøgle & værdipar. Kort sagt opretholder den mappingen af nøgle & værdi (HashMap-klassen svarer nogenlunde til Hashtable, bortset fra at den er usynkroniseret og tillader nulls). Sådan kan du repræsentere HashMap-elementer, hvis de har en heltalsnøgle og en værdi af typen String: f.eks. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”} |
HashSet tillader ikke duplikerede elementer, hvilket betyder, at du ikke kan gemme duplikerede værdier i HashSet. | HashMap tillader ikke duplikerede nøgler, men det tillader dog at have duplikerede værdier. |
HashSet tillader at have en enkelt nulværdi. | HashMap tillader en enkelt nulnøgle og et vilkårligt antal nulværdier. |
Ligheder:
1) Både HashMap og HashSet er ikke synkroniserede, hvilket betyder, at de ikke er egnede til trådsikre operationer unitl, medmindre de synkroniseres eksplicit. Sådan kan du synkronisere dem eksplicit:
HashSet:
Set s = Collections.synchronizedSet(new HashSet(...));
HashMap:
Map m = Collections.synchronizedMap(new HashMap(...));
2) Begge disse klasser garanterer ikke, at rækkefølgen af deres elementer forbliver konstant over tid.
3) Hvis du kigger på kildekoden for HashSet, så kan du se, at den er bakket op af en HashMap. Så grundlæggende bruger den internt en HashMap til alle sine operationer.
4) De giver begge en konstant tidspræstation for grundlæggende operationer som f.eks. tilføjelse, fjernelse af elementer osv.
HashSet eksempel
import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}
Output:
HashSet contains: AABBCCDD
HashMap eksempel
import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}
Output:
HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}
Leave a Reply