Cómo usar hashmap en java

Cómo usar hashmap en java
Antes de saber cómo usar un hashmap en Java, el lector tiene que saber qué es un hashmap. Considere los siguientes pares de llave/valor de frutas y sus colores: manzana roja => rojo
Plátano => amarillo
limón => amarillo pálido
lima => verde amarillo
Kivi => verde
Aguacate => verde
Uva => púrpura
Fig => Púrpura
=> - - - - -
=> - - - - -
=> - - - - -

La columna de la izquierda tiene las teclas, y la columna de la derecha tiene los valores correspondientes. Tenga en cuenta que las frutas, el kivi y el aguacate tienen el mismo color, verde. Además, las frutas, las uvas y las higos tienen el mismo color, morado. Al final de la lista, tres ubicaciones están esperando sus propios colores. Estas ubicaciones no tienen frutas correspondientes; En otras palabras, estas tres ubicaciones no tienen claves correspondientes.

Todas las ubicaciones, ya sea llenas o no, a la derecha, se llaman cubos. Para cada valor, hay una clave. Las teclas son únicas. Los valores no tienen que ser únicos. Esta es una relación de muchos a uno.

Lo que se almacena en la tabla es la columna correcta. Es decir, lo que se almacena en la tabla son los valores. Las teclas no tienen que almacenarse. La clave se envía como un argumento a una función llamada función hash para llegar a un valor. La función hash produce el índice correspondiente asociado con un valor particular.

Cualquier estructura que se adapte a todas las descripciones anteriores se llama hash. Con el hashmap en Java, las teclas son de un tipo de objeto, y los valores son de otro tipo de objeto. Puede haber una clave nula, y puede haber más de un valor nulo.

El tamaño de un hashmap es el número de pares de clave/valor (entradas). La capacidad de un hashmap es la cantidad de cubos, ya sea llenos o no. La capacidad siempre debe ser mayor que el tamaño.

Con la introducción anterior, el lector ahora puede aprender a usar un hashmap en Java.

Contenido del artículo

  • Construcción
  • Incluyendo pares de clave/valor
  • Tamaño del hashmap
  • Leyendo el hashmap
  • Modificando el hashmap
  • Conclusión

Construcción

El hashmap es una clase desde la cual se puede crear un objeto hashmap. Crear un objeto a partir de una clase es construir el objeto. Hay 4 formas de construir un hashmap en Java.

Factor de carga

El factor de carga es el número de pares de clave/valor dividido por el número de cubos.

Hashmap ()

Este método del constructor crearía un hashmap de capacidad 16 y del factor de carga 0.75. Esto significa que el número de cubos será 16 (y vacío), y el factor de carga predeterminado es 0.75. Después de la creación del hashmap, se incluirán pares de clave/valor. En este caso, cuando el número de pares de clave/valor alcanza 12, a las 12/16 = 0.75, el hashmap se volverá a colocar automáticamente. Esto significa que aumentará automáticamente el número de cubos a 32 (duplicación). El siguiente código muestra cómo crear un objeto hashmap usando este constructor:

importar java.utilizar.*;
clase de clase
public static void main (string [] args)
Hashmap hm = new Hashmap ();

La clase hashmap está en Java.Paquete Util. Para este código, las claves serían cadenas, y los valores también serían cadenas.

Hashmap (int initialcapacity)

Esto permite al programador comenzar con una capacidad diferente, pero aún con un factor de carga de 0.75. Ilustración:

importar java.utilizar.*;
clase de clase
public static void main (string [] args)
Hashmap hm = nuevo hashmap (20);

Entonces, el objeto Hasmap aquí comienza con 20 cubos vacíos. Aquí las claves son enteros. Difieren de los índices de matriz en el sentido de que el primer índice no es necesariamente cero. Además, los índices no son contiguos. Por ejemplo, el primer índice quizás 20; El siguiente es 35, el que sigue 52, etc.

Nota: Con el hashmap, el orden de los pares de clave/valor no se mantiene. Es decir, si se incluye un conjunto de pares de clave/valor en un orden, al mostrar el contenido, el pedido será diferente, aunque todos los pares de clave/valor incluidos aún estarían allí.

Los pares de clave/valor para el hashmap se conocen mejor como asignaciones.

HashMap (int InitialCapacity, Float LoadFactor)

Aquí, el factor de carga también se cita. El factor de carga es un tipo flotante y no un tipo entero. Aquí, un factor de carga diferente de 0.75 se cita. Hay ventajas y desventajas para tener un factor de carga que difiere de 0.75 - Ver más tarde. Ilustración:

importar java.utilizar.*;
clase de clase
public static void main (string [] args)
Hashmap hm = nuevo hashmap (20,0.62f);

Tenga en cuenta el uso de 'F' como sufijo para el factor de carga.

Hashmap (mapa m)
Este constructor creará un hashmap a partir de un mapa que ya existe; ver más tarde.

Incluyendo pares de clave/valor

poner (k key, valor v)
Este método relaciona un valor particular con una clave particular. La clave en realidad se ha asado en un índice que está directamente asociado con el valor. Sin embargo, es el programador o usuario el que decide el valor y su clave. El siguiente ejemplo crea un HASMAP, HM e incluye todos los pares de clave/valor y los cubos vacíos desde arriba:

importar java.utilizar.*;
clase de clase
public static void main (string [] args)
Hashmap hm = nuevo hashmap (11);
hm.poner ("manzana roja", "rojo");
hm.poner ("plátano", "amarillo");
hm.poner ("limón", "amarillo pálido");
hm.poner ("lima", "verde amarillo");
hm.poner ("kivi", "verde");
hm.poner ("aguacate", "verde");
hm.poner ("uva", "púrpura");
hm.poner ("Fig", "púrpura");

La capacidad es 11. El número de pares de clave/valor es 8. Esto significa que el tamaño es 8. Entonces, el factor de carga efectivo es 8/11 = 0.73f. El número de cubos vacíos es 11 - 8 = 3.

putifabsent (k key, valor v)
Esto incluye el par de clave/valor si la clave aún no existe en el hashmap. En este caso, el valor de retorno es nulo. Si la clave ya existe, nada cambia y se devuelve el valor anterior de la clave. Si se agrega el siguiente código a la parte inferior del código anterior (en main ()), entonces la salida sería nula:

Cadena v = hm.putifabsent ("sandía", "verde");
Sistema.afuera.println (v);

NOTA: Put (k key, valor v) desplazaría el par de clave/valor para la clave en cuestión que ya está allí, dando efectivamente un nuevo valor para la clave.

Tamaño del hashmap

El tamaño del hashmap es el número de pares de clave/valor.

tamaño()
La siguiente declaración devolverá el tamaño del hashmap:

int sz = hm.tamaño();

esta vacio()
Este método, devuelve verdadero si el hashmap no contiene asignaciones de valor clave, o falso de lo contrario. Ejemplo:

booleano bl = hm.esta vacio();
Sistema.afuera.println (bl);

Un hashmap vacío puede tener cubos vacíos.

Leyendo el hashmap

Get (clave de objeto)
Devuelve (copia) el valor correspondiente a la clave; o devuelve nulo si no hay valor correspondiente. Ejemplo:

Cadena str = hm.Get ("Banana");
Sistema.afuera.println (str);

contiene key (clave de objeto)
Devuelve verdadero si hay una asignación para esa clave en particular; falso de lo contrario. Ejemplo:

booleano bl = hm.contiene key ("plátano");

ContinsValue (valor del objeto)
Devuelve verdadero si hay una asignación para ese valor; falso de lo contrario. Ejemplo:

booleano bl = hm.ContinsValue ("verde");

juego de llaves()
Este método devuelve todas las claves de los pares de clave/valor. Código de ejemplo:

Establecer st = hm.juego de llaves();
para (cadena val: st)
Sistema.afuera.imprimir (val + ",");
Sistema.afuera.println ();

Tenga en cuenta que el objeto de retorno es un conjunto. Si se usa el hashmap original anterior, la salida sería:

limón, kivi, fig, uva, lima, aguacate, manzana roja, plátano,

Tenga en cuenta que el orden no es el orden en que se incluyeron las claves.

valores()
Este método devuelve una colección de todos los valores en el hashmap. Código de ejemplo:

Colección cl = hm.valores();
para (cadena val: cl)
Sistema.afuera.imprimir (val + ",");
Sistema.afuera.println ();

Tenga en cuenta que el objeto de retorno es una colección. Si se usa el hashmap original anterior, la salida sería:

amarillo pálido, verde, púrpura, púrpura, amarillo verde, verde, rojo, amarillo,

Tenga en cuenta que el orden no es el orden en que se incluyeron los valores.

EntrySet ()
Esto devuelve todos los pares de clave/valor, pero el programador debe separar cada clave de su valor correspondiente. Código de ejemplo:

Colocar STM = HM.EntrySet ();
para (mapa.Entrada KV: STM)
Sistema.afuera.println (KV.getKey () + "=>" + kv.getValue ());

Si se usa el hashmap original anterior, la salida sería:

limón => amarillo pálido
Kivi => verde
Fig => Púrpura
Uva => púrpura
lima => verde amarillo
Aguacate => verde
Manzana roja => rojo
Plátano => amarillo

Tenga en cuenta que el orden no es el orden en el que se incluyeron los pares de clave/valor.

Modificando el hashmap

poner (k key, valor v)
El método Put () es similar al método Putifabsent () en el sentido de que si la clave ya existe, se devuelve el valor anterior, y si la clave aún no existe, NULL se devuelve. No olvide que Put () reemplaza el valor anterior si la clave ya existe. Si la clave aún no existe, PUT () incluye la nueva entrada (Key/Value Par).

Reemplazar (Key K, Valor V)
Para una clave que ya está en su lugar, este método se utiliza para reemplazar el valor de la clave correspondiente. El hashmap es una estructura de muchos a uno. Un código de ejemplo para el hashmap anterior es:

Cadena v = hm.reemplazar ("plátano", "blanco");
Sistema.afuera.println (v);
Cadena str = hm.Get ("Banana");
Sistema.afuera.println (str);

La salida es:

amarillo
blanco

El método reemplazar () devuelve el valor anterior. Si la clave no existe, devuelve nulo y no se reemplaza nada.

Reemplazar (K Key, V OldValue, V NewValue)
Esto permite el reemplazo de un valor particular del que el programador conoce. Devuelve verdadero si tuvo éxito y falso si no lo hizo. El código de ejemplo para el objeto HashMap anterior es:

booleano bl = hm.reemplazar ("uva", "púrpura", "marrón");
Sistema.afuera.println (bl);

eliminar (tecla de objeto)
Esto elimina el par de clave/valor asignado por la clave. Devuelve el valor correspondiente eliminado. Devuelve nulo si la clave no estaba presente. El código de ejemplo para el hashmap anterior es:

Cadena v = hm.eliminar ("plátano");
Sistema.afuera.println (v);

eliminar (clave de objeto, valor de objeto)
Esto habilita la eliminación de una entrada (Key/Value Par) para un valor particular del que el programador conoce. Devuelve verdadero si tuvo éxito y falso si no lo hizo. El código de ejemplo para el objeto HashMap anterior es:

booleano bl = hm.eliminar ("aguacate", "verde");
Sistema.afuera.println (bl);

Conclusión

Una matriz puede considerarse como un mapeo de índices a los valores (de un tipo particular). Se debe usar un hashmap cuando se necesita la asignación de un tipo de objeto a otro tipo de objeto. De esta manera, hay pares de clave/valor. Un hash es una estructura de datos donde el número de valores es limitado, pero el número de claves posibles es más que el número de valores posibles. Y entonces las claves tienen que ser hash para llegar a los valores. Java hashmap por su función hash implícita se ha presentado anteriormente. El programador puede escribir su propia función de hash (mapeo). Sin embargo, ese es un tema por otro tiempo.

Chrys