Vsebina
- Primarna razlika
- Primerjalna tabela
- Opredelitev HashMap-a
- Opredelitev HashTable-a
- Razlike v matici
- Zaključek
Primarna razlika
HashMap in HashTable sta dve kritični strukturi podatkov na Javi. V okviru zbiranja imajo nekaj skupnih stvari. Čeprav imajo te podobnosti, je med njimi nekaj razlik. Podatka HashMap in HashTablestore shranjujeta v obliki parov ključ-vrednost in slao, ki izvajata vmesnik Map. Za shranjevanje elementov uporabljata tehnika Hashing tako HashMap kot HashTable. Kot moramo obravnavati razlike med obema, tako najpomembnejša razlika temelji na varnosti niti. Glavne razlike med HashMap-om in HashTable-om vključujejo Null Key, Iterating vrednosti, Synchronization. Zmogljivost in razred. HashTable je varno z nitmi, medtem ko na drugi strani HashMap ni varno z nitmi. HashTable se sinhronizira interno, medtem ko HashMap ni sinhroniziran interno, zato HashMap ni varen za uporabo v več niti. Učinkovitost HashMap-a je dobra v primerjavi s HashTable-om, saj se HashTable sinhronizira notranje. HashMap ima prednost pred HashTable, saj je HashTable zapuščinski razred in velja za amortizacijo. HashMap je v primerjavi s HashTablom hiter. Od začetka predstavitve HashMap-a v JDK 1.2 je član Java Collection Framework, vendar je pred JDK 1.2 HashTable že prisoten, JDK 1.2 pa je bil vgrajen v vmesnik Map in postal član zbirke Framework.
Primerjalna tabela
HashMap | HashTable | |
Opredelitev | HashMap dovoli največ en ničelni ključ, dovoljeno pa je tudi poljubno število ničelnih vrednosti. | Niti dovoljuje niti enega ničelnega ključa niti nične vrednosti. |
Vrnitev | Za prečkanje elementov HashMap vrne samo Iteratorje | Vrnitve niso samo Iteratorji, ampak tudi Poštevanje. |
Izvajanje | izvaja vmesnik Map z razširitvijo razreda AbstractMap | Izvaja vmesnik Map z razširitvijo razreda slovarja. |
Sinhronizacija | Interno se ne sinhronizira | Interno se sinhronizira |
Opredelitev HashMap-a
HashMap je pomembna struktura podatkov v zbirki Framework na Javi. HashMap ni navojen, ni interno sinhroniziran, zato HashMap ni varen za uporabo v več niti. Lahko pa je varna za več navojne aplikacije, tako da jih zunanje sinhronizirate po metodi Collections.synchronized (). Izvaja vmesnik Map z razširitvijo razreda AbstractMap. HashMap dovoli največ en ničelni ključ, dovoljeno pa je tudi poljubno število ničelnih vrednosti. Iterator, ki ga je vrnil HasMap, je po hitrem postopku. Učinkovitost HashMap-a je dobra in je zato v primerjavi s HashTablom hitra.
Opredelitev HashTable-a
HashTable je pomembna struktura podatkov v zbirki Framework na Javi. HashTable je varno po nitkah in se notranje sinhronizira. Zato ga je varno uporabljati za večnamenske aplikacije. Izvaja vmesnik Map z razširitvijo razreda slovarja. Ne dovoljuje niti enega ničelnega ključa niti nične vrednosti. HashTable je zapuščina in velja za amortizacijo. Poštevanje, ki ga je vrnil HashTable, po naravi ni varno.
Razlike v matici
- HashTable je varno z nitmi, medtem ko na drugi strani HashMap ni varno z nitmi.
- HashTable se sinhronizira notranje, medtem ko HashMap ni sinhroniziran interno.
- Oba HashMap in HashTable izvajata vmesnik Map, vendar oba razširita različne razrede. HashMap izvaja vmesnik Map z razširitvijo razreda AbstractMap, medtem ko na drugi strani HashTable izvaja vmesnik Map z razširitvijo razreda slovarja.
- HashMap dovoljuje največ enega ničelnega ključa in dovoljeno je tudi poljubno število ničelnih vrednosti, medtem ko HashTable ne dovoljuje niti enega ničelnega ključa niti ničelne vrednosti.
- Za prečkanje elementov HashMap vrne samo Iteratorje, medtem ko na drugi strani HashTable vrnejo ne samo Iteratorje, ampak tudi Poštevanje.
- Iterator, ki ga je vrnil HasMap, je po naravi neuspešen, medtem ko so števitve, ki jih je vrnil HashTable, v naravi varne.
- HashMap je v primerjavi s HashTableom hiter.
- HashTable je v primerjavi s HashMapom počasen.
- Učinkovitost HashMap-a je dobra v primerjavi s HashTable-om, saj se HashTable sinhronizira interno.
- HashMap je prednostno nad HashTable, saj je HashTable zapuščinski razred in se šteje, da zapade v plačilo za amortizacijo.
- Od začetka uvedbe HashMap-a v JDK 1.2 je član Java Collection Framework, vendar preden je JDK 1.2 HashTable že prisoten, JDK 1.2 je bil pripravljen za implementacijo vmesnika Map in postal član zbirke Framework.
Zaključek
Računalniška arhitektura je nekaj, kar je skrivnost za ljudi, ki so splošni uporabniki in o njej nimajo podrobnega znanja. Dva izraza HashMap in HashTable sta podobna, vendar veljata za enaka, vendar se razlikujeta v delovanju in funkcijah. Ta članek torej daje pravilno razumevanje obeh vrst, da bi ljudje dobili jasnejšo predstavo.