Razlika između HashMap-a i Hashtable-a u Javi
Sadržaj
Oba HashMap i Hashtable koriste se za predstavljanje a skupina objekata koji su zastupljeni u
Pogledajmo usporedni grafikon prikazan u nastavku kako bismo saznali još neke razlike između HashMap-a i Hashtable-a.
- Usporedni grafikon
- definicija
- Ključne razlike
- sličnosti
- Zaključak
Usporedni grafikon
Osnove za usporedbu | HashMap | Hashtable |
---|---|---|
Provesti / produžiti | HashMap klasa implementira sučelje Map i proširuje klasu AbstractMap. | Hashtable proširuje razred Legacy Class, ali, on je redizajniran i sada također implementira Map sučelje. |
Sinkronizacija | HashMap je nesinkroniziran, te stoga HashMap objekt nije siguran u navoj. | Hashtable je sinkroniziran, pa je stoga predmet Hashtable-a siguran na niti. |
Tipke / vrijednost | Ključ može vratiti Null samo jednom, ali vrijednost može vratiti Null bilo koji broj vremena. | Ključ ne može vratiti Null jer se koristi za dobivanje hash koda koji će se koristiti kao indeks hash tablice, niti vrijednost može vratiti Null. |
Zadani početni kapacitet | Zadani početni kapacitet HashMap-a je 16. | Zadani početni kapacitet Hashtable-a je 11. |
poprijeko | HashMap prelazi Iterator. | Kao i klasa Map Hashtable, također izravno ne podržava Iterator za putovanje, pa koristi Enumerator. |
Definicija HashMap-a
HashMap je klasa koja implementira Karta sučelje i proširuje AbstractMap klasa koristi tablicu hash-a. Objekt HashMap odnosi se na kolekciju / skup / * K predstavlja ključ, a V predstavlja vrijednost * / klase HashMap Prvi konstruktor je zadani konstruktor koji inicijalizira prazan objekt HashMap-a sa zadanim kapacitetom 16 i zadanim omjerom ispunjavanja 0,75. Drugi konstruktor inicijalizira hash mapu sa vrijednošću m. Treći konstruktor stvara hash mapu s početnim kapacitetom koji odgovara vrijednosti navedenoj u argumentu "kapacitet". Četvrti konstruktor inicijalizira hash map s kapacitetom i omjerom punjenja navedenim u parametrima. doznajmo sada kako hraniti unose u hash mapi. Hashmap hm = novi Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * izlaz * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} U gornjem kôdu možete vidjeti da sam stvorio prazan HashMap objekt hm sa zadanim početnim kapacitetom i zadanim omjerom punjenja. Zatim sam umetnuo četiri unosa u hash kartu koristeći put (K, V) metodu koja ključ preslikava na vrijednost. Možete primijetiti da unosi nisu uređeni u redoslijedu u kojem ih hranite jer redoslijed umetanja nije fiksiran. Sada razmislite o slučaju da već imate unos Hashtable je klasa koja proširuje Rječnik klase koja je naslijeđena klasa i reinženjerirana je za implementaciju Karta sučelje. Hashtable koristi hash tablicu kao svoju strukturu podataka. Hashtable je sličan HashMap-u, jer se ovdje objekt Hashtable odnosi na zbirku unosa u kojima je svaki unos par / * K određuje ključ, a V određuje vrijednost koja je povezana s ključem * / klasa Hashtable U gornjem kôdu, prvi konstruktor je zadani konstruktor koji stvara prazan objekt klase Hashtable, njegova zadana veličina je 11, a zadani omjer ispunjavanja 0,75. Drugi konstruktor stvara tablicu hash-a s veličinom koja odgovara vrijednosti navedenoj u parametru "size". Treći konstruktor stvara tablicu hash-a s veličinom i omjerom ispunjavanja navedenim u parametru. Četvrti konstruktor inicijalizira hash tablicu sa vrijednošću m. Naučimo sada kako umetnuti Hashtable ht = novi Hashtable (); ht.put (novi hashCode (2), 275); ht.put (novi hashCode (12), 250); ht.put (novi hashCode (16), 150); ht.put (novi hashCode (8), 200); System.out.ln (ht); / * izlaz * / {12 = 250, 16 = 150,2y = 275, 8 = 200} U gornjem kôdu stvorio sam prazan objekt Hashtable i umetnuo četiri unosa pomoću metode put (). Unutar put metoda nazvao sam hashCode () koji izračunava i vraća hash vrijednost koda koja će djelovati kao vrijednost indeksa za objekt unosa. Kao što vidite, nisam spomenuo veličinu hash tablice, pa će prema zadanim postavkama biti 11. Ovdje također redoslijed umetanja nije sačuvan i, prema tome, kada se unosi ed ne pojavljuju u redoslijedu u kojem je postavljen. HashMap je bolji u performansama jer su njegovi objekti nesinhronizirani i na njemu može raditi više niti istovremeno, pa je i brži od Hashtable-a.
Definicija Hashtable-a
sličnosti:
Zaključak: