Diferència entre HashMap i Hashtable a Java
Content
El quadre de comandament i el quadre de pantalla, s'utilitzen tots dos per representar un grup d'objectes que es representen a
Anem a veure el gràfic de comparació que es mostra a continuació per conèixer algunes diferències més entre HashMap i Hashtable.
- Gràfic de comparació
- Definició
- Diferències claus
- Semblances
- Conclusió
Gràfic de comparació
Bases per a la comparació | HashMap | Taula escriptori |
---|---|---|
Implementar / Ampliar | La classe HashMap implementa la interfície Map i estén una classe AbstractMap. | La taula de mostres s’estén a la classe del Diccionari Legat, però, es reenginyeria i ara també implementa la interfície Map. |
Sincronització | HashMap no està sincronitzat i, per tant, l’objecte HashMap no té seguretat pel fil. | La taula de comandament està sincronitzada i, per tant, l'objecte de Hashtable és segur pel fil. |
Claus / Valor | Una tecla pot tornar Null una sola vegada, però un valor pot retornar Null qualsevol quantitat de temps. | Una clau no pot tornar Null ja que s'utilitza per obtenir el codi hash que s'utilitzarà com a índex de la taula hash, ni un valor pot retornar Null. |
Capacitat inicial per defecte | La capacitat inicial predeterminada de HashMap és de 16. | La capacitat inicial predeterminada de Hashtable és 11. |
Travers | HashMap el recorre Iterator. | Igual que la classe de mapa Hashtable tampoc no admet directament Iterator per al desplaçament i, per tant, utilitza Enumerator. |
Definició de HashMap
HashMap és una classe que implementa Mapa interfície i amplia la secció AbstractMap classe utilitza la taula hash. L'objecte del HashMap fa referència a una col·lecció o a un conjunt de / * K representa la clau i V representa el valor * / classe HashMap El primer constructor és un constructor predeterminat que inicialitza un objecte buit de HashMap amb una capacitat predeterminada de 16 i una relació d'ompliment per defecte de 0,75. El segon constructor inicialitza el mapa de hash amb el valor de m. El tercer constructor crea un mapa hash amb la capacitat inicial corresponent al valor proporcionat a l'argument "capacitat". El quart constructor inicialitza el mapa hash amb una capacitat i una proporció d'ompliment proporcionada als paràmetres. aprenguem ara com alimentar les entrades en un mapa hash. Hashmap hm = Hashmap nou (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordània", 200); System.out.ln (hm); / * sortida * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordània = 200} Al codi anterior, podeu veure que he creat un objecte HashMap buit hm amb capacitat inicial predeterminada i proporció d'ompliment predeterminada. A continuació, he inserit quatre entrades al mapa hash mitjançant el mètode put (K, V) que assenyala la clau del valor. Podeu observar que les entrades no s’editen en una seqüència que les feu servir perquè l’ordre d’inserció no és fix. Ara, considereu un cas que ja teniu una entrada La taula de comandes és una classe que estén la secció Diccionari classe que és una classe de llegat i reenginyada per implementar la Mapa interfície. La taula de control fa servir la taula de hash com a estructura de dades. La taula de captació és similar a la de HashMap, ja que també l'objecte de Hashtable fa referència a la col·lecció d'entrades on cada entrada és un parell de / * K especifica la clau i V especifica el valor associat a la clau * / classe Taula de taula Al codi anterior, el primer constructor és un constructor predeterminat que crea un objecte buit d'una classe de taula de taula, la seva mida predeterminada és 11 i la proporció d'ompliment per defecte és de 0,75. El segon constructor crea una taula hash amb la mida corresponent al valor proporcionat al paràmetre “size”. El tercer constructor crea una taula de hash amb una mida i una proporció d'ompliment proporcionades al paràmetre. El quart constructor inicialitza la taula hash amb el valor m. Aprenguem ara com s’inserirà Hashtable ht = Hashtable new (); ht.put (nou codi hashCode (2), 275); ht.put (nou codi hashCode (12), 250); ht.put (nou codi hashCode (16), 150); ht.put (nou codi hashCode (8), 200); System.out.ln (ht); / * sortida * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Al codi anterior, he creat un objecte buit de Hashtable i he inserit quatre entrades mitjançant el mètode put (). Al mètode put anomenat hashCode (), que calcula i retorna el valor del codi hash, que actuarà com a valor índex per a l'objecte d'entrada. Com veieu, no he esmentat la mida de la taula de hash, per defecte serà 11. Aquí també, l’ordre d’inserció no es conserva i, per tant, quan les entrades ed no apareixien en seqüència, es va alimentar. HashMap té un millor rendiment ja que els seus objectes no estan sincronitzats i diversos fils poden operar al mateix temps i, per tant, és més ràpid que Hashtable.Definició de Hashtable
Similituds:
Conclusió: