Capacitación en Java de Beida Jade Bird: ¿Cuál es el marco de clases de conjuntos más utilizado en Java?
HashMap se implementa en función de la interfaz Map de la tabla hash, que proporciona todas las operaciones de mapeo opcionales.
Mapeo de pares de almacenamiento de descubrimiento/entrenamiento por computadora de Gansu, que permite múltiples valores nulos y una clave nula.
Sin embargo, esta clase no garantiza el orden del mapeo, especialmente no garantiza que el orden permanezca sin cambios.
La clase HashMap es más o menos la misma que Hashtable, excepto que HashMap es asincrónica y permite nulos.
Esta implementación supone que la función hash distribuye elementos de manera adecuada entre los depósitos, lo que puede proporcionar un rendimiento estable para las operaciones básicas (obtener y colocar).
El tiempo necesario para iterar una vista de colección es proporcional a la "capacidad" (número de depósitos) y el tamaño (número de relaciones de mapeo clave-valor) de la instancia de HashMap.
Por lo tanto, si el rendimiento de la iteración es importante, no establezca la capacidad inicial demasiado alta (o el factor de carga demasiado bajo).
Una instancia de HashMap tiene dos parámetros que afectan su rendimiento: capacidad inicial y factor de carga.
La capacidad es el número de depósitos en la tabla hash, y la capacidad inicial es solo la capacidad cuando se crea la tabla hash.
El factor de carga es una medida de qué tan llena puede estar una tabla hash antes de que su capacidad aumente automáticamente.
Cuando el número de entradas en la tabla hash excede el producto del factor de carga y la capacidad actual, la tabla hash se volverá a aplicar hash (es decir, se reconstruirá la estructura de datos interna) para que el hash La mesa tendrá aproximadamente el doble de barriles.
Generalmente, el factor de carga predeterminado (0,75) busca un compromiso entre costes de tiempo y espacio.
Aunque un factor de carga alto reduce la sobrecarga de espacio, también aumenta la sobrecarga de consultas (esto se refleja en la mayoría de las operaciones de clase HashMap, incluidas las operaciones get y put).
Al configurar la capacidad inicial, debe considerar la cantidad de entradas requeridas en el mapa y su factor de carga para minimizar la cantidad de operaciones de repetición.
Si la capacidad inicial es mayor que el número máximo de entradas dividido por el factor de carga, no se producirá ningún refrito.
Tenga en cuenta que esta implementación no es síncrona.
Si varios subprocesos acceden a una instancia de HashMap simultáneamente y al menos uno de ellos modifica estructuralmente la lista, debe permanecer sincronizado externamente.
Esto generalmente se logra sincronizando el objeto utilizado para encapsular la lista.
Sin embargo, si no existe tal objeto, se deben utilizar { @link collections # sincronizadmapcollections. SynchronizedMap} para "ajustar", es mejor hacerlo en el momento de la creación para evitar operaciones asincrónicas inesperadas en el mapa.
mapm = collections .synchronousd map(new hashmap(...)); 2. El constructor HashMap proporciona tres constructores: HashMap(): construye un HashMap vacío, capacidad inicial predeterminada (16), factor de carga predeterminado. (0,75).
HashMap(intinitialCapacity): construye un HashMap vacío con la capacidad inicial especificada y el factor de carga predeterminado (0,75).
HashMap(ininalpacity, factor de carga flotante): construye un HashMap vacío con la capacidad inicial y el factor de carga especificados.
Aquí se mencionan dos parámetros: capacidad inicial y factor de carga.
Estos dos parámetros son parámetros importantes que afectan el rendimiento de HashMap. La capacidad representa el número de depósitos en la tabla hash, la capacidad inicial es la capacidad cuando se crea la tabla hash y el factor de carga es. una medida de la capacidad de la tabla hash. Un indicador de qué tan llena puede estar antes de que se incremente automáticamente, midiendo el uso de espacio de la tabla hash. Cuanto mayor sea el factor de carga, más llena estará la tabla hash y viceversa.
Para una tabla hash que utiliza el método de lista enlazada, el tiempo promedio para encontrar un elemento es O(1+a), por lo que si el factor de carga es mayor, el espacio se utilizará más plenamente, pero el El resultado es una disminución de la eficiencia de la búsqueda. Si el factor de carga es demasiado pequeño, los datos de la tabla hash serán demasiado escasos, lo que provocará una grave pérdida de espacio.
El factor de carga predeterminado del sistema es 0,75 y generalmente no necesitamos modificarlo.
HashMap es una estructura de datos que admite un acceso rápido. Para comprender su rendimiento, debe comprender su estructura de datos.