Różnica między klasami HashSet i HashMap
W tym artykule omówimy różnice między klasami HashSet i HashMap.
HashSet vs HashMap
Różnice:
HashSet | HashMap |
---|---|
Klasa HashSet implementuje interfejs Set | Klasa HashMap implementuje interfejs Map |
W HashSet przechowujemy obiekty(elementy lub wartości) np.np. Jeśli mamy HashSet elementów typu string to może on przedstawiać zbiór elementów HashSet: {„Hello”, „Hi”, „Bye”, „Run”} | HashMap służy do przechowywania par klucz & wartość. W skrócie utrzymuje mapowanie klucz & wartość (Klasa HashMap jest z grubsza odpowiednikiem Hashtable, z wyjątkiem tego, że jest niezsynchronizowana i pozwala na null). W ten sposób można reprezentować elementy HashMap, jeśli ma ona klucz typu integer i wartość typu String: np. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”} |
HashSet nie pozwala na duplikaty elementów, co oznacza, że nie można przechowywać duplikatów wartości w HashSet. | HashMap nie pozwala na duplikaty kluczy, ale pozwala na duplikaty wartości. |
HashSet zezwala na posiadanie pojedynczej wartości null. | HashMap zezwala na pojedynczy klucz null i dowolną liczbę wartości null. |
Podobieństwa:
1) Zarówno HashMap jak i HashSet nie są zsynchronizowane, co oznacza, że nie nadają się do operacji bezpiecznych dla wątków, chyba że są zsynchronizowane jawnie. Oto jak można je zsynchronizować:
HashSet:
Set s = Collections.synchronizedSet(new HashSet(...));
HashMap:
Map m = Collections.synchronizedMap(new HashMap(...));
2) Obie te klasy nie gwarantują, że kolejność ich elementów pozostanie niezmienna w czasie.
3) Jeśli spojrzysz na kod źródłowy HashSet to możesz zauważyć, że jest on wspierany przez HashMap. Więc w zasadzie wewnętrznie używa HashMap dla wszystkich swoich operacji.
4) Oba zapewniają stałą wydajność czasową dla podstawowych operacji, takich jak dodawanie, usuwanie elementu itp.
HashSet przykład
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 przykład
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