Qu'est-ce qu'un hashmap en Java ? Expliqué avec des exemples

Publié: 2021-07-02

HashMap est une classe de collection en Java. Vous pouvez l'utiliser pour stocker des paires de clé et de valeur. Ses performances dépendent de la capacité initiale et du facteur de charge. HashMap a diverses méthodes qui vous permettent d'utiliser sa structure de données de table de hachage.

Dans l'article suivant, nous allons explorer ce qu'est HashMap et découvrir ses différents constructeurs à travers des exemples.

Table des matières

Qu'est-ce qu'HashMap ?

HashMap est une classe de collection basée sur Map. Nous l'utilisons pour stocker des paires de clé et de valeur. Vous dénotez un HashMap Java comme HashMap<K, V>, où K signifie Key et V signifie Value.

HashMap est similaire à la classe Hashtable. La différence entre les deux est que HashMap n'est pas synchronisé alors que Hashtable ne l'est pas. De plus, contrairement à Hashtable, HashMap autorise les valeurs nulles et la clé nulle.

Étant donné que HashMap n'est pas une collection ordonnée, il ne renvoie pas les clés et les valeurs dans l'ordre dans lequel vous les insérez. De plus, HashMap ne trie pas les clés et les valeurs stockées. Si vous souhaitez utiliser la classe HashMap et ses méthodes, vous devrez importer java.util.HashMap (ou sa superclasse).

HashMap vous offre une implémentation simple de l'interface Map de Java. Vous pouvez accéder aux paires clé-valeur que vous stockez via HashMap en utilisant un index d'un autre type (tel qu'un entier). Gardez à l'esprit que si vous utilisez une clé en double, elle remplace l'élément de la clé correspondante. En outre, vous ne pouvez utiliser qu'un seul objet clé nul ; cependant, il peut y avoir n'importe quel nombre de valeurs nulles.

HashMap implémente les interfaces Cloneable, Serializable, Map<K, V>. Il étend la classe AbstractMap<K, V> et ses sous-classes directes sont PrinterStateReasons et LinkedHashMap.

Fonctionnalités de HashMap

Voici les principales fonctionnalités de HashMap :

  • C'est un composant du java.util.package.
  • Vous pouvez utiliser des valeurs en double, mais HashMap n'autorise pas les clés en double. Cela signifie qu'une clé ne peut pas avoir plusieurs valeurs, mais plusieurs clés peuvent avoir une seule valeur.
  • Vous ne pouvez utiliser les clés NULL qu'une seule fois, mais vous pouvez utiliser différentes valeurs NULL.
  • HashMap ne fournit aucune garantie concernant l'ordre de la carte. Donc, cela ne garantit pas si la commande restera constante.
  • HashMap est très similaire à Hashtable, à la seule différence que HashMap n'est pas synchronisé.
  • HashMap implémente une interface sérialisable et clonable.

Constructeurs HashMap

Il existe quatre constructeurs dans HashMap :

1. HashMap()

HashMap() est le constructeur par défaut qui crée une instance avec un facteur de charge de 0,75 et une capacité initiale de 16.

Exemple :

// Affichage du fonctionnement du constructeur HashMap()

importer java.io.* ;

importer java.util.* ;

classe AddElementsToHashMap {

public static void main(String args[])

{

// Vous n'êtes pas obligé de mentionner le

// Type générique deux fois

HashMap<Integer, String> hm1 = new HashMap<>();

// Utilisation de Generics pour initialiser HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>();

// Utilisez la méthode put pour ajouter n'importe quel élément

hm1.put(1, "A");

hm1.put(2, "B");

hm1.put(3, "C");

hm2.put(4, "D");

hm2.put(5, "E");

hm2.put(6, "F");

System.out.println("Les résultats de hm1 sont : "

+hm1);

System.out.println("Les résultats de HashMap hm2 sont : "

+hm2);

}

}

Sortie :

Les résultats de hm1 sont : {1=A, 2=B, 3=C}

Les résultats de hm2 sont : {4=D, 5=E, 6=F}

2. HashMap(int capacité initiale)

HashMap(int initialCapacity) créerait une instance avec une charge de 0,75 et une capacité initiale spécifique.

Exemple :

// Affichage du fonctionnement du constructeur HashMap(int initialCapacity)

importer java.io.* ;

importer java.util.* ;

classe AddElementsToHashMap {

public static void main(String args[])

{

// Vous n'êtes pas obligé de mentionner le

// Type générique deux fois

HashMap<Integer, String> hm1 = new HashMap<>(10);

// Utilisation de Generics pour initialiser HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>(2);

// Utilisez la méthode put pour ajouter n'importe quel élément

hm1.put(1, "A");

hm1.put(2, "B");

hm1.put(3, "C");

hm2.put(4, "D");

hm2.put(5, "E");

hm2.put(6, "F");

System.out.println("Les résultats de hm1 sont : "

+hm1);

System.out.println("Les résultats de HashMap hm2 sont : "

+hm2);

}

}

Sortie :

Les résultats de hm1 sont : {1=A, 2=B, 3=C}

Les résultats de hm2 sont : {4=D, 5=E, 6=F}

3. HashMap(int initialCapacity, float loadFactor)

HashMap(int initialCapacity, float loadFactor) génère une instance avec un facteur de charge et une capacité initiale spécifiques.

Exemple :

// Affichage du fonctionnement du constructeur HashMap(int initialCapacity, float loadFactor)

importer java.io.* ;

importer java.util.* ;

classe AddElementsToHashMap {

public static void main(String args[])

{

// Vous n'êtes pas obligé de mentionner le

// Type générique deux fois

HashMap<Integer, String> hm1

= nouveau HashMap<>(5, 0.75f);

// Utilisation de Generics pour initialiser le HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>(3, 0.5f);

// Utilisez la méthode put pour ajouter des éléments

hm1.put(1, "A");

hm1.put(2, "B");

hm1.put(3, "C");

hm2.put(4, "D");

hm2.put(5, "E");

hm2.put(6, "F");

System.out.println("Les résultats de hm1 sont : "

+hm1);

System.out.println("Les résultats de HashMap hm2 sont : "

+hm2);

}

}

Sortie :

Les résultats de hm1 sont : {1=A, 2=B, 3=C}

Les résultats de hm2 sont : {4=D, 5=E, 6=F}

4. HashMap (carte de la carte)

HashMap(Map map) créerait une instance avec les mêmes mappages que la carte que vous spécifiez.

Exemple :

// Affichage du fonctionnement du constructeur HashMap(Map map)

importer java.io.* ;

importer java.util.* ;

classe AddElementsToHashMap {

public static void main(String args[])

{

// Vous n'êtes pas obligé de mentionner le

// Type générique deux fois

Map<Integer, String> hm1 = new HashMap<>();

// Utilisation de Generics pour initialiser HashMap

HashMap<Integer, String> hm2

= new HashMap<Integer, String>(hml);

// Utilisez la méthode put pour ajouter n'importe quel élément

hm1.put(1, "A");

hm1.put(2, "B");

hm1.put(3, "C");

hm2.put(4, "D");

hm2.put(5, "E");

hm2.put(6, "F");

System.out.println("Les résultats de hm1 sont : "

+hm1);

System.out.println("Les résultats de HashMap hm2 sont : "

+hm2);

}

}

Sortie :

Les résultats de hm1 sont : {1=A, 2=B, 3=C}

Les résultats de hm2 sont : {4=D, 5=E, 6=F}

En savoir plus sur Java

Java a de nombreuses classes en dehors de HashMap. Apprendre par vous-même les détails de chacune de ces classes, leurs utilisations et leur intégration dans Java est assez difficile. La meilleure façon de procéder est de suivre un cours d'informatique.

Suivre un cours professionnel vous permettra de maîtriser les compétences et les concepts nécessaires grâce à un programme structuré. De plus, ces cours offrent une expérience d'apprentissage immersive facilitée par des vidéos, des sessions en direct et des conférences en ligne qui vous permettent de comprendre plus facilement les fondamentaux théoriques.

Vous pouvez consulter notre programme de maîtrise ès sciences en informatique proposé en association avec LJMU (Liverpool John Moores University, Royaume-Uni) et IIIT-B (International Institute of Information Technology, Inde). Le cours couvre plus de 500 heures de contenu, plus de 10 conférences en direct et plus de 30 études de cas.

Ce cours de 19 mois promet une expérience d'apprentissage globale et hautement axée sur la valeur. La plus grande valeur ajoutée réside dans le fait que vous pouvez vous connecter et dialoguer avec des pairs du monde entier. upGrad se vante d'avoir plus de 40 000 apprenants mondiaux rémunérés répartis dans plus de 85 pays. En conséquence, vous êtes exposé à de nouvelles cultures, de nouvelles opinions et de nouvelles perspectives qui élargissent votre vision globale. De plus, vous êtes formé par des mentors experts de LJMU et IIIT-B qui fournissent une assistance dédiée et personnalisée pour vous aider à résoudre vos doutes.

En plus de ces avantages, ce programme vous fournira une assistance professionnelle à 360 degrés qui comprend le mentorat de l'industrie, des opportunités de réseautage et bien plus encore.

Conclusion

Dans cet article, nous avons appris ce qu'est HashMap, ses différents constructeurs et comment vous pouvez les implémenter à travers des exemples. HashMap a une tonne d'applications en Java - vous pouvez utiliser HashMap pour ajouter des éléments, les supprimer et les gérer selon vos besoins.

Que pensez-vous de ce guide sur HashMap ? Partagez-les dans la section des commentaires ci-dessous.

Améliorez vos compétences et préparez-vous pour l'avenir

Postulez maintenant pour le formulaire de cours de génie logiciel LJMU