Diferența dintre HashMap și Hashtable în Java
Conţinut
HashMap și Hashtable, ambele sunt utilizate pentru a reprezenta o grup de obiecte care sunt reprezentate în
Să vedem graficul de comparație prezentat mai jos pentru a afla alte diferențe între HashMap și Hashtable.
- Diagramă de comparație
- Definiție
- Diferențele cheie
- Asemănările
- Concluzie
Diagramă de comparație
Baza pentru comparație | HashMap | Hashtable |
---|---|---|
Implementați / Extindeți | Clasa HashMap implementează interfața Map și extinde o clasă AbstractMap. | Hashtable se extinde din clasa Dicționar Legacy, dar, este re-proiectat și acum implementează, de asemenea, interfața Map. |
Sincronizare | HashMap este nesincronizat și, prin urmare, obiectul HashMap nu este în siguranță cu filet. | Hashtable este sincronizat și, prin urmare, obiectul Hashtable este sigur în fire. |
Taste / Valoare | O cheie poate returna Null-ul o singură dată, dar o valoare poate returna Null orice număr de timp. | O cheie nu poate returna Null, deoarece este folosită pentru a obține codul hash care va fi folosit ca un index al tabelului hash și nici o valoare nu poate returna Null. |
Capacitate inițială implicită | Capacitatea inițială implicită a HashMap este 16. | Capacitatea inițială implicită a Hashtable este de 11. |
pendulare | HashMap este traversat de Iterator. | Ca și clasa Map Hashtable nu acceptă în mod direct Iterator pentru parcurgere și, prin urmare, folosește Enumerator. |
Definiția HashMap
HashMap este o clasă care implementează Hartă interfață și extinde AbstractMap clase folosește tabelul hash. Obiectul HashMap se referă la o colecție / set de / * K reprezintă cheia, iar V reprezintă valoarea * / clasa HashMap Primul constructor este un constructor implicit care inițializează un obiect gol al HashMap cu o capacitate implicită de 16 și un raport de umplere implicit de 0,75. Al doilea constructor inițializează harta hash cu valoarea lui m. Al treilea constructor creează o hartă hash cu capacitatea inițială corespunzătoare valorii furnizate în argumentul „capacitate”. Al patrulea constructor inițializează harta hash cu o capacitate și un raport de umplere furnizate în parametri. să învățăm acum cum să alimentăm intrările dintr-o hartă hash. Hashmap hm = Hashmap new (); hm.put ("Ajay", 275); hm.put („Vijay”, 250); hm.put ("Jonny", 150); hm.put („Iordania”, 200); System.out.ln (hm); / * ieșire * / {Vijay = 250, Jonny = 150, Ajay = 275, Iordania = 200} În codul de mai sus, puteți vedea că am creat un obiect HashMap gol hm cu capacitatea inițială implicită și raportul de umplere implicit. Apoi am inserat patru intrări în harta hash folosind metoda put (K, V) care mapează cheia valorii. Puteți observa că intrările nu sunt editate într-o secvență pe care le alimentați, deoarece ordinea de inserare nu este fixată. Acum, luați în considerare un caz în care aveți deja o intrare Hashtable este o clasă care extinde Dicţionar clasa care este o clasă de moștenire și este reengineered pentru a implementa Hartă interfață. Hashtable folosește tabelul hash ca structură de date. Hashtable este similară cu HashMap, deoarece aici și obiectul Hashtable se referă la colecția de intrări în care fiecare intrare este o pereche de / * K specifică cheia, iar V specifică valoarea asociată cu cheia * / clasa Hashtable În codul de mai sus, primul constructor este un constructor implicit care creează un obiect gol dintr-o clasă Hashtable, dimensiunea sa implicită este 11 și raportul de umplere implicit este 0,75. Al doilea constructor creează un tabel hash cu dimensiunea corespunzătoare valorii furnizate în parametrul „size”. Al treilea constructor creează un tabel hash cu dimensiunea și raportul de umplere furnizate în parametru. Al patrulea constructor inițializează tabelul hash cu valoarea m. Să învățăm acum cum să introducem Hashtable ht = new Hashtable (); ht.put (nou hashCode (2), 275); ht.put (nou hashCode (12), 250); ht.put (nou hashCode (16), 150); ht.put (nou hashCode (8), 200); System.out.ln (ht); / * ieșire * / {12 = 250, 16 = 150,2y = 275, 8 = 200} În codul de mai sus, am creat un obiect gol din Hashtable și am inserat patru intrări folosind metoda put (). În cadrul metodei put, am numit hashCode () care calculează și returnează valoarea codului hash, care va acționa ca valoarea index pentru obiectul de intrare. După cum puteți vedea, nu am menționat dimensiunea tabelului de hash, deci în mod implicit va fi 11. De asemenea, ordinea de inserare nu este păstrată și, prin urmare, când intrările ed nu au apărut în secvență, au fost alimentate. HashMap are o performanță mai bună, deoarece obiectele sale sunt nesincronizate și mai multe fire pot opera pe el în același timp și, prin urmare, este mai rapid decât Hashtable.
Definiția Hashtable
asemănări:
Concluzie: