Différence entre HashMap et LinkedHashMap en Java

Auteur: Laura McKinney
Date De Création: 2 Avril 2021
Date De Mise À Jour: 9 Peut 2024
Anonim
Différence entre HashMap et LinkedHashMap en Java - La Technologie
Différence entre HashMap et LinkedHashMap en Java - La Technologie

Contenu


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 l’une de l’autre 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.

  1. Tableau de comparaison
  2. Définition
  3. Différences Clés
  4. Conclusion

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 met en œuvre Carte Interface. Il étend également le Carte abstraite class afin qu’il puisse utiliser une table de hachage pour stocker les entrées dans la carte. Les entrées de la carte est un 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, elle remplacera la valeur précédente de cette clé par la nouvelle valeur proposée et renverra l'ancienne valeur. 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.ln (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 édité l'objet HashMap, les entrées ne sont pas édité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 sera renvoyé. 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 16 et le taux de remplissage par défaut est 0.75.

Définition de LinkedHashMap

LinkedHashMap est également une utilisation de classe pour créer une carte. LinkedHashMap étend la HashMap classe et a ensuite été introduit 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 liste liée et table de hachage.

En plus des méthodes héritées par HashMap, LinkedHashMap introduit une nouvelle méthode qui est 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.

  1. La différence la plus importante est que l’ordre d’insertion de HashMap est non conservé alors que, l'ordre d'insertion de LinkedHashMap est conservé.
  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 chaînée et Hashtable.
  3. La classe HashMap s'étend Carte abstraite classe et implémente le Carte interface. Cependant, la classe LinkedHashMap est une classe enfant de HashMap classe i.e. La classe LinkedHashMap étend la classe HashMap.
  4. La classe HashMap a été introduite dans le JDK 2.0 version. La classe LinkedHashMap a été introduite plus tard dans JDK 4.0 version.
  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 sommes préoccupés par la séquence des éléments insérés dans la carte.