Skillnaden mellan HashSet och HashMap

I den här artikeln kommer vi att diskutera skillnaderna mellan klasserna HashSet och HashMap.

HashSet vs HashMap

Skillnader:

HashSet HashMap
HashSet-klassen implementerar Set-gränssnittet HashMap-klassen implementerar Map-gränssnittet
I HashSet lagrar vi objekt (element eller värden) e.t.ex. om vi har en HashSet med strängelement kan den avbilda en uppsättning HashSet-element: { HashMap används för att lagra nyckel- &värdepar. Kort sagt upprätthåller den mappningen av nyckel & värde (HashMap-klassen är ungefär likvärdig med Hashtable, förutom att den är osynkroniserad och tillåter nollor). Så här kan du representera HashMap-element om de har en helhetsnyckel och ett värde av typen String: t.ex. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
HashSet tillåter inte dubbletter, vilket innebär att du inte kan lagra dubbletter av värden i HashSet. HashMap tillåter inte dubbletter av nycklar, men det är möjligt att ha dubbletter av värden.
HashSet tillåter ett enda nollvärde. HashMap tillåter en enda nollnyckel och ett obegränsat antal nollvärden.

Likheter:
1) Både HashMap och HashSet är inte synkroniserade, vilket innebär att de inte lämpar sig för trådsäkra operationer unitl såvida de inte synkroniseras uttryckligen. Så här kan du synkronisera dem explicit:
HashSet:

Set s = Collections.synchronizedSet(new HashSet(...));

HashMap:

 Map m = Collections.synchronizedMap(new HashMap(...));

2) Båda dessa klasser garanterar inte att ordningen på deras element kommer att förbli konstant över tiden.

3) Om du tittar på källkoden för HashSet så kan du se att den backas upp av en HashMap. Så i princip använder den internt en HashMap för alla sina operationer.

4) Båda ger konstant tidsprestanda för grundläggande operationer som att lägga till, ta bort element etc.

HashSet example

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 example

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