Java - La classe IdentityHashMap

Cette classe implémente AbstractMap. Il est similaire à HashMap sauf qu'il utilise l'égalité de référence lors de la comparaison des éléments.

Cette classe n'est pas une implémentation de Map à usage général. Bien que cette classe implémente l'interface Map, elle viole intentionnellement le contrat général de Map, qui impose l'utilisation de la méthode equals lors de la comparaison d'objets.

Cette classe est conçue pour être utilisée uniquement dans de rares cas où une sémantique d'égalité de référence est requise. Cette classe fournit des performances à temps constant pour les opérations de base (get et put), en supposant que la fonction de hachage d'identité du système (System.identityHashCode (Object)) répartit correctement les éléments entre les compartiments.

Cette classe a un paramètre de réglage (qui affecte les performances mais pas la sémantique): la taille maximale attendue. Ce paramètre est le nombre maximal de mappages clé-valeur que la carte devrait contenir.

Voici la liste des constructeurs pris en charge par IdentityHashMap.

N ° Sr. Constructeur et description
1

IdentityHashMap()

Ce constructeur construit une nouvelle carte de hachage d'identité vide avec une taille maximale attendue par défaut (21).

2

IdentityHashMap(int expectedMaxSize)

Ce constructeur construit un nouveau IdentityHashMap vide avec la taille maximale attendue spécifiée.

3

IdentityHashMap(Map m)

Ce constructeur construit une nouvelle mappe de hachage d'identité contenant les mappages clés-valeurs dans la mappe spécifiée.

Outre les méthodes héritées de ses classes parentes, IdentityHashMap définit les méthodes suivantes -

N ° Sr. Méthode et description
1

void clear()

Supprime tous les mappages de cette carte.

2

Object clone()

Renvoie une copie superficielle de cette carte de hachage d'identité: les clés et les valeurs elles-mêmes ne sont pas clonées.

3

boolean containsKey(Object key)

Teste si la référence d'objet spécifiée est une clé dans cette carte de hachage d'identité.

4

boolean containsValue(Object value)

Teste si la référence d'objet spécifiée est une valeur dans cette carte de hachage d'identité.

5

Set entrySet()

Renvoie une vue d'ensemble des mappages contenus dans cette carte.

6

boolean equals(Object o)

Compare l'objet spécifié avec cette carte pour l'égalité.

sept

Object get(Object key)

Renvoie la valeur à laquelle la clé spécifiée est mappée dans cette mappe de hachage d'identité, ou null si la mappe ne contient aucun mappage pour cette clé.

8

int hashCode()

Renvoie la valeur du code de hachage pour cette carte.

9

boolean isEmpty()

Renvoie true si cette mappe de hachage d'identité ne contient aucun mappage clé-valeur.

dix

Set keySet()

Renvoie une vue d'ensemble basée sur l'identité des clés contenues dans cette carte.

11

Object put(Object key, Object value)

Associe la valeur spécifiée à la clé spécifiée dans cette mappe de hachage d'identité.

12

void putAll(Map t)

Copie tous les mappages de la carte spécifiée sur cette carte. Ces mappages remplaceront tous les mappages que cette carte avait pour l'une des clés actuellement dans la carte spécifiée.

13

Object remove(Object key)

Supprime le mappage pour cette clé de cette carte, le cas échéant.

14

int size()

Renvoie le nombre de mappages clé-valeur dans cette mappe de hachage d'identité.

15

Collection values()

Renvoie une vue de collection des valeurs contenues dans cette carte.

Exemple

Le programme suivant illustre plusieurs des méthodes prises en charge par cette collection -

import java.util.*;
public class IdentityHashMapDemo {

   public static void main(String args[]) {
      // Create a hash map
      IdentityHashMap ihm = new IdentityHashMap();
 
      // Put elements to the map
      ihm.put("Zara", new Double(3434.34));
      ihm.put("Mahnaz", new Double(123.22));
      ihm.put("Ayan", new Double(1378.00));
      ihm.put("Daisy", new Double(99.22));
      ihm.put("Qadir", new Double(-19.08));
      
      // Get a set of the entries
      Set set = ihm.entrySet();
      
      // Get an iterator
      Iterator i = set.iterator();
      
      // Display elements
      while(i.hasNext()) {
         Map.Entry me = (Map.Entry)i.next();
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
      }
      System.out.println();
      
      // Deposit 1000 into Zara's account
      double balance = ((Double)ihm.get("Zara")).doubleValue();
      ihm.put("Zara", new Double(balance + 1000));
      System.out.println("Zara's new balance: " + ihm.get("Zara"));
   }
}

Cela produira le résultat suivant -

Production

Ayan: 1378.0
Qadir: -19.08
Mahnaz: 123.22
Daisy: 99.22
Zara: 3434.34

Zara's new balance: 4434.34