Różnica między HashMap i Hashtable w Javie
Zawartość
HashMap i Hashtable, oba służą do przedstawienia grupa obiektów które są reprezentowane w
Zobaczmy tabelę porównawczą pokazaną poniżej, aby dowiedzieć się więcej o różnicach między HashMap i Hashtable.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Podobieństwa
- Wniosek
Wykres porównania
Podstawa do porównania | HashMap | Hashtable |
---|---|---|
Implementuj / przedłuż | Klasa HashMap implementuje interfejs Map i rozszerza klasę AbstractMap. | Hashtable rozszerza klasę Dictionary Legacy, ale został przeprojektowany i teraz implementuje również interfejs Map. |
Synchronizacja | HashMap nie jest zsynchronizowany, a zatem obiekt HashMap nie jest bezpieczny dla wątków. | Hashtable jest zsynchronizowany, a zatem obiekt Hashtable jest bezpieczny dla wątków. |
Klucze / wartość | Klucz może zwrócić wartość Null tylko raz, ale wartość może zwrócić wartość Null dowolną liczbę razy. | Klucz nie może zwrócić wartości Null, ponieważ jest używany do uzyskania kodu skrótu, który będzie używany jako indeks tabeli skrótów, ani wartość nie może zwrócić wartości Null. |
Domyślna pojemność początkowa | Domyślna początkowa pojemność HashMap to 16. | Domyślna początkowa pojemność Hashtable to 11. |
Przemierzanie | HashMap jest obsługiwany przez Iterator. | Podobnie jak klasa mapy Hashtable również nie obsługuje bezpośrednio Iteratora do przechodzenia i dlatego używa Enumeratora. |
Definicja HashMap
HashMap to klasa implementująca Mapa interfejs i rozszerza AbstractMap klasa korzysta z tabeli skrótów. Obiekt HashMap odnosi się do zbioru / zestawu / * K reprezentuje klucz, a V reprezentuje wartość * / class HashMap Pierwszy konstruktor jest domyślnym konstruktorem, który inicjuje pusty obiekt HashMap o domyślnej pojemności 16 i domyślnym współczynniku wypełnienia 0,75. Drugi konstruktor inicjuje mapę skrótu wartością m. Trzeci konstruktor tworzy mapę skrótu o początkowej pojemności odpowiadającej wartości podanej w argumencie „pojemność”. Czwarty konstruktor inicjuje mapę mieszania o pojemności i współczynniku wypełnienia podanym w parametrach. nauczmy się teraz, jak karmić wpisy na mapie mieszającej. Hashmap hm = new Hashmap (); hm.put („Ajay”, 275); hm.put („Vijay”, 250); hm.put („Jonny”, 150); hm.put („Jordan”, 200); System.out.ln (hm); / * wyjście * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} W powyższym kodzie widać, że utworzyłem pusty obiekt HashMap hm z domyślną pojemnością początkową i domyślnym współczynnikiem wypełnienia. Następnie wstawiłem cztery wpisy do mapy skrótów za pomocą metody put (K, V), która odwzorowuje klucz na wartość. Możesz zauważyć, że wpisy nie są edytowane w sekwencji, w której je podajesz, ponieważ kolejność wstawiania nie jest stała. Teraz rozważ przypadek, w którym masz już wpis Hashtable to klasa rozszerzająca Słownik klasa, która jest klasą starszą i została przeprojektowana do implementacji Mapa berło. Hashtable używa tabeli skrótów jako struktury danych. Hashtable jest podobny do HashMap, ponieważ tutaj również obiekt Hashtable odnosi się do zbioru wpisów, gdzie każdy wpis jest parą / * K określa klucz, a V określa wartość powiązaną z kluczem * / class Hashtable W powyższym kodzie pierwszy konstruktor jest domyślnym konstruktorem, który tworzy pusty obiekt klasy Hashtable, jego domyślny rozmiar to 11, a domyślny współczynnik wypełnienia to 0,75. Drugi konstruktor tworzy tablicę skrótów o rozmiarze odpowiadającym wartości podanej w parametrze „rozmiar”. Trzeci konstruktor tworzy tablicę skrótów o rozmiarze i współczynniku wypełnienia podanym w parametrze. Czwarty konstruktor inicjuje tablicę skrótów wartością m. Nauczmy się teraz, jak wstawić Hashtable ht = new Hashtable (); ht.put (nowy hashCode (2), 275); ht.put (nowy hashCode (12), 250); ht.put (nowy hashCode (16), 150); ht.put (nowy hashCode (8), 200); System.out.ln (ht); / * wyjście * / {12 = 250, 16 = 150,2y = 275, 8 = 200} W powyższym kodzie stworzyłem pusty obiekt Hashtable i wstawiłem cztery wpisy za pomocą metody put (). Wewnątrz metody put nazwałem hashCode (), która oblicza i zwraca wartość kodu skrótu, która będzie działać jako wartość indeksu dla obiektu wejściowego. Jak widać, nie wspominałem o wielkości tabeli skrótów, więc domyślnie będzie to 11. Tutaj również kolejność wstawiania nie jest zachowywana, a zatem, gdy ed wpisy nie pojawiały się w kolejności, były podawane. HashMap ma lepszą wydajność, ponieważ jego obiekty są niezsynchronizowane, a wiele wątków może na nim działać jednocześnie, a zatem jest szybszy niż Hashtable.
Definicja Hashtable
Podobieństwa:
Wniosek: