La tabla hash también se conoce como la lista de distribución, que es una estructura de clase de colección utilizada para almacenar objetos de grupo.
¿Qué es una mesa de hash?
Tanto las matrices como los vectores pueden almacenar objetos, pero la posición de almacenamiento del objeto es aleatoria, es decir, no existe una conexión necesaria entre el objeto en sí y su posición de almacenamiento. Cuando desea encontrar un objeto, solo puede compararse con cada elemento en un determinado orden (como la búsqueda secuencial o la búsqueda de dos puntos). ser significativamente reducido.
Un método de almacenamiento efectivo es que no se compara con otros elementos, y el registro que se puede obtener a la vez se puede obtener. Esto requiere establecer una relación correspondiente específica entre la posición de almacenamiento del objeto y el atributo clave del objeto (establecido en k) para corresponder a cada objeto correspondiente a una posición de almacenamiento única. Al buscar, simplemente calcule el valor de f (k) en función de los atributos clave del objeto a verificar. Si este objeto está en la colección, debe estar en la posición de almacenamiento F (k), por lo que no es necesario comparar con otros elementos en el conjunto. Llamado a esta relación correspondiente F como un método hash, y la tabla establecida de acuerdo con esta idea es una tabla hash.
Java usa la categoría de hashtable para lograr la tabla hash.
• Capacidad: la capacidad de hashtable no es fija, y la capacidad del objeto también puede aumentar automáticamente.
• Clave (clave): cada objeto de almacenamiento requiere una palabra clave. Todas las palabras clave en una hashtable son únicas.
• Código hash: si desea almacenar el objeto a hashtable, debe asignar la clave de palabras clave a los datos enteros para convertirse en el código de clave hash.
• Artículo: cada uno de los hashtable tiene dos dominios, que son la clave de dominio de palabras clave y el valor de dominio del valor (objeto de almacenamiento). Tanto la clave como el valor pueden ser un objeto de tipo de objeto, pero no puede estar vacío.
• Factor de carga: el factor de llenado está representado por la plenitud de la tabla hash, y su valor es igual a la longitud del número de elementos que la tabla hash anterior.
Uso de la tabla de hash
Hay tres formas principales de métodos de construcción para tablas hash:
Hashtable ();
Hashtable (int capacidad);
Hashtable (INT Capacidad, Float LoadFactor)
Los principales métodos de las tablas hash se muestran en la Tabla 8-6.
Tabla 8-6 Métodos frecuentes definidos por la definición de la tabla hash
método | Función |
---|---|
nulo claro () | Reascita y borre la tabla hash |
Boolean contiene (valor de objeto) | Determinar si la tabla hash contiene un objeto dado, si hay una devolución verdadera, de lo contrario se devolverá el falso |
Boolean contiene key (clave de objeto) | Determinar si la tabla hash contiene una palabra clave dada, si hay una devolución a verdaderas, de lo contrario se devolverá el falso |
boolean isEmpty () | Confirme si la tabla hash está vacía, si vuelve a verdadero, de lo contrario el falso se devolverá |
Object Get (clave de objeto) | Objeto para obtener las palabras clave correspondientes, si no hay retorno nulo |
Vacío rehash () | No importa cómo, la tabla de hash de expansión puede ahorrar más elementos. |
Objeto Put (clave de objeto, valor de objeto) | Guarde el objeto en la tabla hash con una palabra clave dada. |
Objeto eliminar (tecla de objeto) | Eliminar el objeto correspondiente a la fase de palabra clave de la tabla hash, si el objeto no vuelve a null |
Tize int () | Volver al tamaño de la tabla hash |
Cadena toString () | Convierta el contenido de la tabla hash en una cadena |
La creación de la tabla hash también se puede implementar a través del nuevo operador. Su declaración es:
HaveTable ha = new Hashtable ();
ejemplo:
[Ejemplo 8-12] Traversing de tablas hash.
// ************** EP8_12.Java **************************************** ************************************************************ **********************import java.util.*; HAS.PUT ("One", nuevo entero (1)); ", new Double (12.3)); set S = HaS.KeySet (); for (iterator <String> i = s.Iterator (); i.hasnext ();) {System.out.println (Has.get ( I.Next ()));}}}
Ejecutar resultados:
21312.3