Colección de citas famosas - Colección de versos - ¿Cómo utilizar Java para recorrer un mapa en el trabajo?

¿Cómo utilizar Java para recorrer un mapa en el trabajo?

Hay muchas formas de recorrer un mapa en Java. Echemos un vistazo a los métodos más comunes y sus pros y contras.

Dado que todos los mapas en Java implementan la interfaz de mapas, el siguiente método es aplicable a cualquier implementación de mapas (HashMap, Treemap, Linked HashMap, Hashtable, etc.).

Método 1: Utilice elementos para iterar en un bucle para cada uno.

Esta es la forma más común y, en la mayoría de los casos, la más ideal para atravesar. Se utiliza cuando se requieren ambos valores clave.

Nota: El bucle for-each se introdujo en Java 5, por lo que este método sólo se puede aplicar a Java 5 o superior. Si itera sobre un objeto de mapa vacío, el bucle for-each generará una NullPointerException, por lo que siempre debe verificar si hay referencias nulas antes de iterar.

Método 2: Recorrer claves o valores en un bucle for-each.

Si solo necesita claves o valores en el mapa, puede iterarlos por conjunto de claves o valor en lugar de por conjunto de entradas.

Este método es ligeramente mejor que el recorrido de EntrySet en rendimiento (10 veces más rápido) y el código es más limpio.

Método 3: utilizar el iterador para recorrer.

Utilice genéricos:

No utilice genéricos:

También puede aplicar el mismo enfoque a conjuntos de claves y valores.

Este enfoque puede parecer redundante, pero tiene sus ventajas. En primer lugar, esta es la única forma de recorrer el mapa en versiones anteriores de Java. Otro beneficio es que se puede llamar a iterator.remove() para eliminar entradas durante la iteración, mientras que los otros dos métodos no. Según el javadoc, si intenta utilizar este método en un recorrido para cada uno, los resultados son impredecibles.

En términos de rendimiento, este método es similar al rendimiento del recorrido para cada uno (es decir, el segundo método).

Método 4: recorrer por valor de búsqueda clave (ineficiente)

Como alternativa al método uno, este código parece más limpio pero en realidad es bastante lento e ineficiente. Porque obtener el valor de la clave es una operación que requiere mucho tiempo (en comparación con el primer método, este método es entre 20 y 200 más lento en diferentes implementaciones de mapas). Si tiene FindBugs instalado, lo comprobará y le advertirá sobre recorridos ineficientes. Así que trata de evitar su uso.

Resumen

Si solo necesita claves o valores, utilice el segundo método. Si la versión de su idioma es inferior a Java 5, o planea eliminar entradas durante el recorrido, debe utilizar el método 3. De lo contrario, utilice el método uno (se requieren ambos valores clave).