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