Czytałem/badałem powód, dla którego HashMap
jest szybszy niż HashSet
.Dlaczego HashMap jest szybszy niż HashSet?
nie jestem całkiem rozumiejąc następujące oświadczenia:
HashMap
jest szybszy niżHashSet
ponieważ wartości te są powiązane z unikalnym kluczem.W obiekcie
HashSet
obiekt członkowski służy do obliczania wartości hashcode, która może być taka sama dla dwóch obiektów, więc do sprawdzenia równości wykorzystywana jest metodaequals()
. Jeśli zwrócifalse
, oznacza to, że dwa obiekty są różne. WHashMap
wartość kodu haszującego jest obliczana przy użyciu obiektu klucza.Wartość hashcode
HashMap
jest obliczana przy użyciu obiektu klucza. W tym przypadku obiekt członkowski służy do obliczania kodu skrótu, który może być taki sam dla dwóch obiektów, więc metoda jest używana do sprawdzenia równości. Jeśli zwrócifalse
, oznacza to, że dwa obiekty są różne.
Kończąc moje pytanie:
Myślałem
HashMap
iHashSet
obliczyć hashcode w ten sam sposób. Dlaczego oni są inni?Czy możesz podać konkretny przykład, w jaki sposób w inny sposób oblicza się kod hashowy na
HashSet
iHashMap
?Wiem, co to jest "kluczowy obiekt", ale co to znaczy "obiekt członkowski"?
HashMap
może zrobić to samo, coHashSet
i szybsze. Dlaczego potrzebujemyHashSet
? Przykład:HashMap <Object1, Boolean>= new HashMap<Object1, boolean>(); map.put("obj1",true); => exist map.get("obj1"); =>if null = not exist, else exist
Powinieneś przeczytać o różnicy między 'Map' i' Set'. Są to dwa różne rodzaje "kolekcji". Gdy to zrobisz, powinno być jasne, dlaczego pobranie określonego obiektu z mapy jest szybsze niż ze zbioru. – Magnilex
Hashset jest zbudowany na HashMap. A zestaw służy do unikalności. To nie jest zbiór kluczy wartości klucza. –
Tak. Wiem, że implementują inny interfejs. Ale niektórzy ludzie mówią, że hashset używa hashmap w backend. Jeśli to prawda, dlaczego hashset będzie wolniejszy niż hashmap? – runcode