HashMap en Java es una clase que forma parte de la colección Java. Implementa la interfaz Map de java. Almacena los datos en forma de par clave y valor. La clave debe ser única, pero el valor puede estar duplicado. Si intenta insertar la clave duplicada, reemplazará el elemento de la clave correspondiente. HashMap es similar a la tabla hash, pero no está sincronizada. Permite almacenar las claves nulas y los valores nulos, pero solo debe haber una clave nula y puede haber cualquier número de valores nulos.
IdentityHashMap implementa la interfaz Map . Sigue la igualdad de referencia en lugar de la igualdad de objeto al comparar claves (y valores). Esta clase se utiliza cuando el usuario requiere que los objetos se comparen por referencia. No está sincronizado y debe sincronizarse externamente. Los iteradores en esta clase son a prueba de fallas, lanzan ConcurrentModificationException en un intento de modificar durante la iteración.
HashMap e IdentityHashMap son las clases que implementan la interfaz Map . Pero son pocas las diferencias que existen entre ellos.
Ejemplo 1: HashMap
Java
// Java program to illustrate // the working of Java HashMap // to demonstrate // internal working difference between them // Importing HashMap class from // java.util package import java.util.HashMap; // Class public class GFG { // Main driver method public static void main(String[] args) { // Creating an empty HashMap object HashMap<Integer, String> map = new HashMap<>(); // Add elements to the map // Custom inputs map.put(10, "Geeks"); map.put(20, "for"); map.put(30, "geeks"); map.put(40, "welcome"); map.put(50, "you"); // Printing the size of map System.out.println("Size of map is:- " + map.size()); // Printing the HashMap content System.out.println("HashMap content: " + map); // Removing a key 50 map.remove(50); // Printing the HashMap after the removal System.out.println("HashMap after removal : " + map); } }
Size of map is:- 5 HashMap content: {50=you, 20=for, 40=welcome, 10=Geeks, 30=geeks} HashMap after removal : {20=for, 40=welcome, 10=Geeks, 30=geeks}
Ejemplo 2: IdentityHashMap
Java
// Java program to illustrate // working of IdentityHashmap // to demonstrate // internal working difference between them // Importing all classes of // java.util package import java.util.*; // Class for iterating IdentityHashMap public class GFG { // Main driver method public static void main(String[] args) { // Creating an empty IdentityHashMap object IdentityHashMap<Integer, String> ihmap = new IdentityHashMap<Integer, String>(); // Mapping string values to int keys // Custom inputs --> Custom mappings ihmap.put(10, "Geeks"); ihmap.put(20, "for"); ihmap.put(30, "Geeks"); ihmap.put(40, "Welcomes"); ihmap.put(50, "You"); // Display the size of IdentityHashMap System.out.println("IdentityHashMap size : " + ihmap.size()); // Display the IdentityHashMap System.out.println("Initial identity hash map: " + ihmap); // Create an Iterator over the IdentityHashMap Iterator<IdentityHashMap.Entry<Integer, String> > itr = ihmap.entrySet().iterator(); // Condition check using hasNext() method() // Condition check using hasNext() method holding // true if there is any next element remaining while (itr.hasNext()) { // next() method which is used to // retrieve the next element IdentityHashMap.Entry<Integer, String> entry = itr.next(); // Print and display key and value pairs // using getKey() method System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } } }
IdentityHashMap size : 5 Initial identity hash map: {10=Geeks, 40=Welcomes, 50=You, 30=Geeks, 20=for} Key = 10, Value = Geeks Key = 40, Value = Welcomes Key = 50, Value = You Key = 30, Value = Geeks Key = 20, Value = for
Diferencia entre HashMap e IdentityHashMap en Java
S.NO. _ | mapa hash | IdentityHashMap |
---|---|---|
1. | HashMap implementa la interfaz del mapa pero no viola el contrato general del mapa. | IdentityHashMap también implementa la interfaz Map pero viola intencionalmente el contrato general del mapa. |
2. | HashMap usa la igualdad de objetos para comparar la clave y los valores. | IdentityHashMap usa la igualdad de referencia para comparar la clave y los valores. |
3. | HashMap usa el método hashCode() de la clase HashMap para encontrar la ubicación del depósito. | IdentityHashMap no usa el método hashCode() sino que usa el método System.IdentityHashCode() para encontrar la ubicación del depósito. |
4. | HashMap usa enstringmiento. | IdentityHashMap utiliza una tabla hash de sonda de revestimiento simple. |
5. | Para almacenar de forma segura los objetos en HashMap, las claves deben ser inmutables. | IdentityHashMap no requiere que la clave sea inmutable. |
6. | HashMap tiene un rendimiento ligeramente inferior al de IdentityHashMap. | IdentityHashMap funciona mejor que HashMap. |
Publicación traducida automáticamente
Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA