Recommandé, 2021

Choix De L'Éditeur

Différence entre HashMap et LinkedHashMap en Java

HashMap et LinkedHashMap sont des classes assez similaires et utilisées pour créer une carte. La classe HashMap étend la classe AbstractMap à l'utilisation d'une table de hachage pour stocker les éléments dans la carte. La classe LinkedHashMap conserve les entrées dans la carte en fonction de leur ordre d'insertion. La fonctionnalité qui distingue HashMap et LinkedHashMap est que Hashmap ne conserve pas l'ordre des entrées stockées dans une carte. D'autre part, LinkedHashMap utilise une structure de données hybride pour conserver l'ordre des entrées dans lesquelles elles ont été insérées. Dans le tableau de comparaison ci-dessous, j'ai exploré d'autres différences entre HashMap et LinkedHashMap.

Tableau de comparaison

Base de comparaisonHashMapLinkedHashMap
De baseL'ordre d'insertion dans HashMap n'est pas préservé.L'ordre d'insertion est préservé dans LinkedHashMap.
Structure de donnéesHashMap utilise HashTable pour stocker des cartes.LinkedHashMap utilise HashTable avec la liste liée pour stocker la carte.
Étend / ImplementsHashMap étend AbstractMap et implémente l'interface Map.LinkedHashMap étend Hashmap.
VersionHashMap a été introduit dans JDK 2.0.LinkedHashMap a été introduit dans JDK 4.0.
AérienComparativement moins de frais généraux.De manière relativement plus onéreuse, car il doit conserver l'ordre des entrées de la carte.

Définition de HashMap

HashMap est une classe utilisée pour créer une carte. Il implémente l'interface de carte . Il étend également la classe AbstractMap afin qu’il puisse utiliser une table de hachage pour stocker les entrées dans la carte. Les entrées de la carte sont une paire où chaque clé est associée à la valeur. La clé dans l'entrée est utilisée pour récupérer la valeur, elle doit donc être unique. C'est pourquoi les clés en double ne sont pas autorisées dans HashMap. Mais la clé dans chaque entrée de la carte peut avoir un type différent, c'est-à-dire que les clés dans la carte créée par HashMap peuvent être hétérogènes. La structure de données utilisée par HashMap pour stocker une carte est une table de hachage.

L'ordre d'insertion des entrées dans HashMap n'est pas préservé. L'insertion d'entrées dans la carte créée à l'aide de HashMap est basée sur le code de hachage calculé par les clés entrées. Si, par erreur, vous avez entré une clé en double dans HashMap, la valeur précédente de cette clé sera remplacée par la nouvelle valeur proposée et sera renvoyée à l'ancienne. Si aucune clé en double n'est utilisée et qu'aucun remplacement n'a eu lieu, la clé retourne toujours Null. Voyons comment ajouter les entrées à la carte de hachage avec l'exemple suivant.

 Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * sortie * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Comme dans le code ci-dessus, vous pouvez voir que j'ai créé un objet de HashMap et ajouté les entrées à l'aide de la méthode de vente. Lorsque j'ai imprimé l'objet HashMap, les entrées ne sont pas imprimées dans l'ordre dans lequel elles ont été insérées. Par conséquent, vous ne pouvez pas prétendre que l'ordre des entrées dans HashMap reviendra. HashMap utilise toutes les méthodes de l'interface Map et de la classe AbstractMap et n'introduit aucune nouvelle méthode. il a ses propres constructeurs. La capacité par défaut de la carte de hachage est de 16 et le taux de remplissage par défaut est de 0, 75 .

Définition de LinkedHashMap

LinkedHashMap est également une classe utilisée pour créer une carte. LinkedHashMap étend la classe HashMap et a été introduit plus tard dans HashMap dans JDK version 4.0. Étant la classe enfant de la classe HashMap, LinkedHashMap est exactement identique à la classe HashMap, y compris les constructeurs et les méthodes. Mais LinkedHashMap diffère dans le sens où il maintient l'ordre d'insertion des entrées dans la carte. La structure de données utilisée par LinkedHashMap pour stocker la carte est une liste liée et une table de hachage .

En plus des méthodes héritées par HashMap, LinkedHashMap introduit une nouvelle méthode, removeEldestEntry () . Cette méthode est utilisée pour supprimer l'entrée la plus ancienne de la carte. La capacité par défaut de LinkedHashMap est de 16 et le taux de remplissage par défaut est de 0, 75, ce qui est également similaire à la classe HashMap.

Différences clés entre HashMap et LinkedHashMap en Java

  1. La différence la plus importante est que l'ordre d'insertion de HashMap n'est pas préservé, alors que l'ordre d'insertion de LinkedHashMap est préservé .
  2. La structure de données utilisée par HashMap pour stocker les éléments de la carte est Hashtable . D'autre part, la structure de données utilisée par LinkedHashMap est Liste liée et Table de hachage.
  3. La classe HashMap étend la classe AbstractMap et implémente l'interface Map . Cependant, la classe LinkedHashMap est une classe enfant de la classe HashMap, c'est-à-dire que la classe LinkedHashMap étend la classe HashMap.
  4. La classe HashMap a été introduite dans la version JDK 2.0 . La classe LinkedHashMap a été introduite plus tard dans la version JDK 4.0 .
  5. Comparativement, la classe LinkedHashMap a plus de temps système que HashMap, car elle doit conserver l'ordre des éléments insérés dans la carte.

Conclusion:

LinkedHashMap ne doit être utilisé que lorsque nous nous intéressons à la séquence des éléments insérés dans la carte.

Top