Otros a menudo le piden la diferencia entre hashmap y hashtable. Lo resumiré aquí hoy.
(I) La historia de la herencia es diferente
HASHTABLE DE CLASE PÚBLICA extiende Dictionary Implementos Mappublic Class Hashmap extiende el mapa de implementos de mapas
Hashtable se hereda de la clase de diccionario, y HashMap es una implementación de la interfaz MAP introducida por Java 1.2.
(Ii) Seguridad diferente
Hashmap no es sincronizado, y la hashtable se sincroniza de forma predeterminada, lo que significa que la hashtable es segura de subprocesos y múltiples hilos pueden compartir una hashtable; Y si no hay sincronización correcta, varios subprocesos no pueden compartir hashmap. Java 5 más tarde proporciona concurrenthashmap, que es un reemplazo para hashtable y tiene una mejor escalabilidad que la hashtable. Por supuesto, podemos sincronizar el hashmap por:
Mapa m = colección.synchronizemap (hashmap);
(Iii) es lo mismo o similar en valores nulos posibles
Hashmap le permite usar valores nulos como clave o valor para una entrada de tabla. Solo hay un registro en un hashmap que puede ser una clave vacía, pero cualquier número de entradas puede ser un valor vacío. Es decir, si no se encuentra ninguna clave de búsqueda en la tabla, o si se encuentra la clave de búsqueda, pero es un valor vacío, entonces Get () devolverá nulo; Si bien Hashtable no funciona, ni la clave ni el valor permiten valores nulos.
(Iv) Las implementaciones internas de los dos métodos transversales son diferentes
Hashtable y Hashmap usan el iterador Iterator. El iterador de Hashmap es un iterador de fallas, mientras que el iterador enumerador de la hashtable no es un fallido. Debido a razones históricas, Hashtable también utiliza el método de enumeración.
(V) diferentes usos de los valores hash
Hashtable utiliza directamente el CODEDS del objeto, mientras que HashMap necesita recalcular el valor hash.
(Vi) El método inicial de tamaño y expansión de la matriz de métodos de implementación interna son diferentes.
El tamaño predeterminado de la matriz hash en hashtable es 11, y el método de aumento es antiguo*2+1; El tamaño predeterminado de la matriz Hash en HashMap es 16, y debe ser un exponente de 2.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!