Rozdíl mezi třídami HashSet a HashMap

V tomto článku se budeme zabývat rozdíly mezi třídami HashSet a HashMap.

HashSet vs HashMap

Rozdíly:

HashSet HashMap
Třída HashSet implementuje rozhraní Set Třída HashMap implementuje rozhraní Map
V HashSet ukládáme objekty(prvky nebo hodnoty) např.Např. máme-li HashSet z řetězcových prvků, pak by mohl zobrazovat množinu prvků HashSet: { HashMap se používá pro ukládání dvojic klíčů &hodnot. Stručně řečeno udržuje mapování klíč & hodnota (Třída HashMap je zhruba ekvivalentní třídě Hashtable s tím rozdílem, že je nesynchronizovaná a povoluje nuly). Takto lze reprezentovat prvky HashMap, pokud má celočíselný klíč a hodnotu typu String: např. {1->“Ahoj“, 2->“Hi“, 3->“Bye“, 4->“Run“}
HashSet nepovoluje duplicitní prvky, což znamená, že v HashSet nelze ukládat duplicitní hodnoty. HashMap nepovoluje duplicitní klíče, avšak umožňuje mít duplicitní hodnoty.
HashSet umožňuje mít jednu nulovou hodnotu. HashMap umožňuje jeden nulový klíč a libovolný počet nulových hodnot.

Podobnosti:
1) HashMap i HashSet nejsou synchronizované, což znamená, že nejsou vhodné pro operace bezpečné pro vlákna unitl, pokud nejsou synchronizovány explicitně. Takto je můžete explicitně synchronizovat:
HashSet:

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

HashMap:

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

2) Obě tyto třídy nezaručují, že pořadí jejich prvků zůstane v čase konstantní.

3) Pokud se podíváte na zdrojový kód třídy HashSet, pak můžete zjistit, že je zálohována třídou HashMap. Takže v podstatě interně používá HashMap pro všechny své operace.

4) Oba poskytují konstantní časový výkon pro základní operace, jako je přidávání, odebírání prvků atd.

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