Map containskey java

Java hashmap get key

Hola chicos, puede que sepáis que una de las tareas de programación más comunes al usar HashMap en Java es comprobar si una clave dada existe en el mapa o no. Se supone que esto es fácil, ¿verdad? Sí, es fácil si conoces bien tu API, todo lo que necesitas es llamar al método containsKey(), que devuelve true si la clave dada existe en el HashMap, en caso contrario false; pero he visto a muchos programadores escribir código como el de abajo que no es correcto, lo que me ha inspirado a escribir esta entrada del blog.

Muchos programadores de Java probarán este código para alguna entrada válida y pensarán que está funcionando bien, sólo para crear un error sutil en la producción.    Es por eso que siempre es mejor escribir extensas pruebas JUnit para su código para probar las condiciones positivas, negativas y de límite.

Otra sugerencia que quiero hacer es que siempre es mejor usar un método de la API si puede hacer el trabajo, no sólo yo sino que muchos grandes también han aconsejado esto. El gran programador de Java Joshua Bloch incluso incluyó un capítulo sobre esto en su gran libro de todos los tiempos Effective Java, un libro de lectura obligatoria para cualquier programador de Java.

  Collections java 11

Java hashmap foreach

Un mapa almacena pares clave/valor, donde cada clave tiene un valor asociado. Dada una clave concreta, el mapa puede buscar el valor asociado muy rápidamente. Este es un mapa en el que cada clave es un código de país de 2 letras, como “es”, y los valores asociados son los nombres completos de los países.

El mapa no almacena los pares clave/valor en orden alfabético. En su lugar, los pares clave/valor aparecen en un orden aleatorio basado en la estrategia de “hashing” utilizada internamente. Todo lo que necesitas saber es que cuando llamas a get() o put(), el mapa encuentra la clave correcta muy rápidamente.

El método get() devuelve null cuando se llama con una clave que no está en el mapa. Por lo tanto, el código puede comprobar si el valor devuelto por get() es nulo como otra forma de comprobar si la clave estaba presente. Esta estrategia funciona bien siempre que el código nunca almacene null como valor en el mapa.

Ejemplo de mapa Java

Si se accede al HashMap con mucha frecuencia, la comprobación de la existencia de la clave en cada acceso supondrá una gran sobrecarga. En cambio, si la clave no está presente y por lo tanto se produce una excepción, puedo atrapar la excepción. (cuando sé que esto ocurrirá raramente). Esto reducirá los accesos al HashMap a la mitad.

  Plataforma .NET, Plataforma .NET Core y Xamarin: el panorama de las tecnologías de desarrollo Microsoft en 2018

Por cierto, el HashMap no lanza excepciones por falta de claves, sino que devuelve null. El único caso en el que containsKey es necesario es cuando se almacenan valores nulos, para distinguir entre un valor nulo y un valor faltante, pero esto suele considerarse una mala práctica.

Simplemente utilice containsKey() para mayor claridad. Es rápido y mantiene el código limpio y legible. El punto de los HashMaps es que la búsqueda de la clave es rápida, sólo asegúrese de que el hashCode() y equals() se implementan correctamente.

En el siguiente ejemplo, map almacena una lista de transacciones (enteros) que se aplican a la clave (el nombre de la cuenta bancaria). Para añadir 2 transacciones de 100 y 200 a cuenta_cheque se puede escribir

Fusión de mapas en Java

Hola chicos, uno de los problemas comunes a los que se enfrentan muchos desarrolladores de Java que trabajan con HashMap es cómo comprobar si el Mapa contiene una clave o un valor concreto. Se puede utilizar para comprobar claves duplicadas o simplemente para asegurarse de que no se está anulando el valor actual, ya que si se inserta una clave que ya existe en el HashMap, entonces se acaba anulando su valor. Dado que el HashMap también permite valores duplicados, también es posible que el mismo valor pueda estar emparejado con múltiples claves, por lo que sólo eliminar un mapeo puede no ser suficiente para eliminar ese valor en particular. No prestar atención a estos detalles ha causado problemas en las aplicaciones Java.

  Java nio copy file

Para evitar este tipo de situaciones o simplemente para comprobar si una clave o valor concreto existe en el HashMap, se puede utilizar el método containsKey() y containsValue() de la clase HashMap de Java.

Al hacer revisiones de código he visto que a muchos desarrolladores de Java les gusta iterar sobre el mapa para comprobar si una determinada clave o valor existe en el HashMap o no, eso no es lo ideal y lleva más tiempo; en su lugar, deberías utilizar el método containsKey() y containsValue() para resolver el problema.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad