Clase hashtable
Hashtable hereda la interfaz del mapa e implementa una tabla hash con un mapeo de valor clave. Cualquier objeto no nulo se puede usar como clave o valor.
Use Put (clave, valor) para agregar datos, use Get (Key) para recuperar datos. La sobrecarga de tiempo de estas dos operaciones básicas es constante.
La hashtable ajusta el rendimiento a través de la capacidad inicial y los parámetros del factor de carga. Por lo general, el factor de carga predeterminado 0.75 puede lograr mejor el tiempo y el equilibrio de espacio. Aumentar el factor de carga puede ahorrar espacio, pero el tiempo de búsqueda correspondiente aumentará, lo que afectará las operaciones como Get and Put.
Un ejemplo simple de usar un hashtable es el siguiente: poner 1, 2 y 3 en un hashtable, y sus claves son "una", "dos", "tres" respectivamente:
HASHTABLE NÚMEROS = new HashTable (); Numbers.put ("One", nuevo entero (1)); Numbers.put ("Two", nuevo entero (2)); Numbers.put ("tres", nuevo entero (3));Para sacar un número, como 2, use la clave correspondiente:
Entero n = (entero) números.get ("dos"); system.out.println ("two =" + n);Dado que un objeto como clave determinará la posición del valor correspondiente calculando su función hash, cualquier objeto como clave debe implementar los métodos hashcode e igual. El hashcode y los métodos equivalentes heredan del objeto de clase raíz. Si usa una clase personalizada como clave, tenga mucho cuidado. De acuerdo con la definición de la función hash, si los dos objetos son los mismos, es decir, obj1.equals (obj2) = verdadero, su húsico debe ser el mismo, pero si los dos objetos son diferentes, sus hascones pueden no ser diferentes. Si los hashcodes de dos objetos diferentes son los mismos, este fenómeno se llama conflicto. El conflicto aumentará la sobrecarga del tiempo de operar la tabla hash. Por lo tanto, intente definir el método hashcode () para acelerar el funcionamiento de la tabla hash.
Si el mismo objeto tiene diferentes hashcodes, la operación en la tabla hash tendrá resultados inesperados (el método get esperado devuelve nulo). Para evitar este problema, solo necesita recordar una cosa: debe reescribir el método igual y el método hashcode al mismo tiempo, en lugar de simplemente escribir uno de ellos.
La hashtable está sincronizada.
Clase de hashmap
Hashmap es similar a la hashtable, la diferencia es que HASHMAP es asíncrono y permite que NULL, es decir, valor nulo y clave nula. Sin embargo, cuando HashMap se considera como una colección (el método de valores () puede devolver una colección), su sobrecarga de tiempo de suboperación iterativa es proporcional a la capacidad de HASHMAP. Por lo tanto, si el rendimiento de las operaciones de iteración es muy importante, no establece que la capacidad de inicialización de HASHMAP sea demasiado alta o el factor de carga es demasiado bajo.
Resumir