Introducción al mapa
Mapee la clave al objeto del valor. Un mapa no puede contener teclas duplicadas; Cada clave solo puede asignar a un valor como máximo. Esta interfaz reemplaza la clase de diccionario, que es completamente una clase abstracta, no una interfaz.
La interfaz del mapa proporciona tres vistas de colección que permiten ver el contenido de un mapa en forma de un conjunto de clave, un conjunto de valor o un conjunto de relaciones de mapeo de valor clave. El orden de mapeo se define como el orden en el que el iterador devuelve sus elementos en la vista de colección del mapa. Algunas implementaciones de mapeo garantizan explícitamente su pedido, como la clase Treemap; Otros no garantizan su pedido, como la clase hashmap.
Nota: Se debe tener cuidado adicional cuando se usa objetos mutables como claves de mapeo. Cuando un objeto es una clave en un mapa, si el valor del objeto se cambia de una manera que afecta la comparación igual, el comportamiento del mapa será incierto. Un caso especial que esto prohíbe es que un mapa no se permite incluir como clave. Aunque se permite que un mapa se incluya como un valor, tenga cuidado: la definición de iguales y los métodos hashcode ya no serán explícitos en tales mapas.
Interfaz de mapa:
El mapa proporciona una asignación de clave a valor. Un mapa no puede contener la misma clave, y cada clave solo puede asignar un valor. La interfaz MAP proporciona tres tipos de vistas de la colección. El contenido del mapa puede considerarse como un conjunto de colecciones de clave, un conjunto de colecciones de valor o un conjunto de asignaciones de valor clave.
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 (); números.put ("one", nuevo entero (1)); números.put ("dos", nuevo entero (2)); números.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. , pero cuando hashmap se considera una colección (el método valores () puede devolver una colección), su gastos generales de tiempo de suboperación iterativo 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.
Clase de Deakhashmap
Deakhashmap es un hashmap mejorado que implementa una "referencia débil" a la clave. Si ya no se hace referencia a una clave externamente, la clave puede ser reciclada por GC.
Lo anterior es una introducción a la interfaz del mapa Java. Los estudiantes que están aprendiendo programación Java pueden referirse a ella.