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