Différence entre HashMap et TreeMap en Java

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

Contenu


HashMap et TreeMap sont les classes Map et implémentent toutes les deux l'interface Map. Map est un objet qui stocke des paires clé-valeur, où chaque clé est unique et où il peut y avoir des valeurs en double. La classe HashMap utilise la table de hachage en tant que structure de données. TreeMap utilise l'arbre rouge-noir comme structure de données. La principale différence entre HashMap et Treemap est que le HashMap ne préserve pas l'ordre d'insertion alors que, Treemap Est-ce que.

Commençons donc notre discussion sur les différences entre HashMap et TreeMap à l’aide du tableau de comparaison présenté ci-dessous.

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

Tableau de comparaison

Base de comparaisonHashMapTreeMap
De base HashMap ne conserve pas l'ordre d'insertion.TreeMap maintient l'ordre d'insertion.
Structure de donnéesHashMap utilise Hash Table comme structure de données sous-jacente.TreeMap utilise Red-Black Tree comme structure de données sous-jacente.
Null Keys and Values HashMap autorise la clé Null une fois et la valeur Null, à tout moment.TreeMap n'autorise pas la clé Null, mais autorise les valeurs Null à tout moment.
Étend et implémenteHashMap étend la classe AbstractMap et implémente l'interface Map.TreeMap étend la classe AbstractMap et implémente les interfaces SortedMap et NavigableMap.
PerformanceHashMap fonctionne plus rapidement.TreeMap par rapport à HashMap fonctionne plus lentement.


Définition de HashMap

HashMap est une classe de carte. Il utilise le table de hachage, en tant que structure de données pour stocker la paire valeur / valeur des cartes. L’insertion de la paire clé-valeur se fait en utilisant le code de hachage du clés. Par conséquent, chaque clé de la carte doit être unique car elle sera utilisée pour récupérer les valeurs.

L'ordre d'insertion dans HashMap est ne pas préservé, ce qui signifie que l'objet hashmap ne renvoie pas les éléments dans l'ordre dans lequel ils ont été insérés. D'autre part, l'ordre dans lequel les éléments seront retournés n'est pas fixé.

le clé est autorisé à être NUL à la fois, mais le valeurs peut être NUL à n'importe quel moment. Le HashMap peut contenir le hétérogène objets pour les clés ainsi que des valeurs.


Il y a quatre constructeurs de HashMap:

HashMap () HashMap (Carte m) HashMap (int capacité), HashMap (int capacité, float fillRatio)

le première constructeur crée l'objet vide de HashMap. le seconde constructeur initialise HashMap à l’aide des éléments de Map m. le troisième constructeur initialise HashMap avec la capacité fournie dans l’argument. le Quatrième constructeur initialise la capacité ainsi que le taux de remplissage de l’objet HashMap.

Le défaut capacité du HashMap est 16et la valeur par défaut taux de remplissage du HashMap est 0.75.

Définition de TreeMap

Comme HashMap, TreeMap est également une classe de carte. TreeMap s'étend Carte abstraite classe et implements NavigabelMap et SortedMap. Les objets TreeMap stockent les éléments de la carte dans l’arborescence. La structure de données utilisée pour stocker la carte est la Arbre rouge-noir.

TreeMap stocke la paire valeur / clé dans l'ordre de tri, ce qui facilite la récupération rapide des éléments. L’objet TreeMap renvoie les éléments de la triés (Ascendant) ordre.

Il y a quatre constructeurs de TreeMap:

TreeMap () TreeMap (comparateur <? Super K> comp) TreeMap (Carte <? Étend K,? Étend V> m) TreeMap (SortedMap sm)

le première Les constructeurs créent un objet vide de TreeMap qui serait trié dans l'ordre naturel de ses clés. le seconde constructeur va créer une carte d'arbre vide qui sera trié par le Comparateur cmp. le troisième constructeur ci-dessus créera un treemap qui sera initialisé à l’aide des entrées de Carte m. le Quatrième constructeur créera un treemap qui sera initialisé à l’aide des entrées de SortedMap sm.

Treemap n'a pas de nouvelle méthode propre, il utilise les méthodes d'interface NavigableMap et SortedMap et la classe AbstractMap.

  1. Les deux classes sont utilisées pour créer des objets de carte, mais la différence fondamentale entre HashMap et Treemap est que HashMap ne conserve pas l'ordre d'insertion, contrairement à Treemap.
  2. La structure de données utilisée par Hashmap pour stocker les éléments de la carte est la table de hachage et la structure de données utilisée par TreeMap pour stocker les éléments de la carte est l'arbre rouge-noir.
  3. Les classes Hashmap et Treemap élargissent la classe AbstractMap, mais la classe HashMap implémente l'interface Map et TreeMap implémente les interfaces NavigableMap et SortedMap.
  4. Les valeurs peuvent être Null à tout moment, mais la clé n'est autorisée qu'une seule fois dans HashMap et une clé ne peut jamais être dans Treemap.
  5. Les performances de HashMap sont plus rapides. Elles ne perdent pas de temps à trier les éléments de la carte comme le fait TreeMap. Par conséquent, TreeMap fonctionne plus lentement que HashMap.

Conclusion:

TreeMap doit être utilisé uniquement lorsque vous avez besoin d'une paire clé-valeur sous forme triée. Comme le tri inclut le coût de performance. HashMap étant désynchronisé fonctionne plus rapidement.