Différences entre HashMap et TreeMap

HashMap fait partie de la collection Java. Il fournit l'implémentation de base de l'interface Java Map. Les données sont stockées dans des paires (clé, valeur). Vous devez connaître sa clé pour accéder à une valeur. HashMap est connu sous le nom de HashMap car il utilise la technique de hachage. TreeMap est utilisé pour implémenter l'interface de carte et NavigableMap avec la classe abstraite. La carte est triée par ordre naturel de ses clés, ou par le comparateur fourni lors de la création de la carte, selon le constructeur utilisé.

Similitudes entre HashMap et TreeMap

Outre les différences, il existe les similitudes suivantes entre hashmap et treemap:

  • Les classes HashMap et TreeMap implémentent des interfaces sérialisables et clonables.
  • HashMap et TreeMap étendent la classe AbstractMap.
  • Les classes HashMap et TreeMap fonctionnent sur des paires clé-valeur.
  • HashMap et TreeMap sont des collections non synchronisées.
  • HashMap et TreeMap échouent aux collectes rapides.

Les deux implémentations font partie du cadre de collecte et stockent les données dans des paires clé-valeur.

Programme Java affichant HashMap et TreeMap

Voici un programme java qui montre comment les éléments sont placés et récupérés à partir de hashmap:

package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Production:

De la sortie, il est clair que hashmap ne maintient aucun ordre. Voici un programme java qui montre comment les éléments sont placés et récupérés à partir de treemap.

Code:

package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Production:

À partir de la sortie, on observe que les clés sont triées dans un ordre naturel. Par conséquent, Treemap maintient l'ordre trié.

Différences en tête à tête entre HashMap et TreeMap (infographie)

Ci-dessous sont les principales différences entre HashMap et TreeMap

Différence clé entre HashMap et TreeMap

Voici les points de différence clé HashMap et TreeMap:

1. Structure et mise en œuvre

Hash Map est une implémentation basée sur une table de hachage. Il étend la classe Abstract Map et implémente l'interface Map. Une carte de hachage fonctionne sur le principe du hachage. L'implémentation de la carte agit comme une table de hachage compartimentée mais lorsque les compartiments deviennent trop volumineux, ils sont convertis en nœuds Tree, chacun ayant une structure similaire aux nœuds de TreeMap. TreeMap étend la classe Abstract Map et implémente une interface Navigable Map. La structure de données sous-jacente pour treemap est un arbre rouge-noir.

2. Ordonnance d'itération

L'ordre d'itération de Hash Map n'est pas défini, tandis que les éléments d'un TreeMap sont classés dans un ordre naturel ou dans un ordre personnalisé spécifié à l'aide d'un comparateur.

3. Performance

Comme Hashmap est une implémentation basée sur une table de hachage, elle fournit des performances à temps constant égales à O (1) pour la plupart des opérations courantes. Le temps requis pour rechercher un élément dans une carte de hachage est O (1). Mais s'il y a une implémentation incorrecte dans hashmap, cela peut entraîner une surcharge de mémoire supplémentaire et une dégradation des performances. D'un autre côté, TreeMap fournit une performance de O (log (n)). Étant donné que hashmap est basé sur une table de hachage, il nécessite une plage de mémoire contiguë tandis qu'un treemap n'utilise que la quantité de mémoire requise pour contenir les éléments. Par conséquent, HashMap est plus efficace en temps que treemap mais treemap est plus économe en espace que HashMap.

4. Manipulation nulle

HashMap autorise presque une clé null et plusieurs valeurs null alors que, dans un treemap, null ne peut pas être utilisé comme clé bien que les valeurs null soient autorisées. Si null est utilisé comme clé dans hashmap, il lèvera une exception de pointeur null car il utilise en interne la méthode compare ou compareTo pour trier les éléments.

Comparaison du tableau

Voici un tableau de comparaison montrant les différences entre hashmap et treemap:

Base de comparaisonHashMapTreeMap
Syntaxeclasse publique HashMap étend AbstractMap implémente Map, Cloneable, Serializablepublic class TreeMap étend les implémentations de AbstractMapNavigableMap, Cloneable, Serializable
CommandeHashMap ne fournit aucune commande d'éléments.Les éléments sont commandés dans un ordre naturel ou personnalisé.
La vitesseViteLent
Clés et valeurs nullesAutorise presque une clé en tant que valeurs null et plusieurs valeurs null.Il n'autorise pas null comme clé mais autorise plusieurs valeurs null.
Consommation de mémoireHashMap consomme plus de mémoire en raison de la table de hachage sous-jacente.Consomme moins de mémoire par rapport à HashMap.
FonctionnalitéFournit uniquement des fonctionnalités de baseIl offre des fonctionnalités plus riches.
Méthode de comparaison utiliséeUtilise essentiellement la méthode equals () pour comparer les clés.Utilise la méthode compare () ou compareTo () pour comparer les clés.
Interface implémentéeCarte, sérialisable et clonableCarte navigable, sérialisable et clonable
PerformanceDonne une performance de O (1).Fournit les performances de O (log n)
Structure de donnéesUtilise la table de hachage comme structure de données.Utilise l'arbre rouge-noir pour le stockage des données.
Éléments homogènes et hétérogènesIl permet des éléments aussi bien homogènes qu'hétérogènes car il n'effectue aucun tri.Il autorise uniquement les éléments homogènes lors du tri.
Cas d'utilisationUtilisé lorsque nous n'avons pas besoin de paires clé-valeur dans l'ordre trié.Utilisé lorsque les paires clé-valeur d'une carte doivent être triées.

Conclusion

D'après l'article, nous en concluons que hashmap est une implémentation à usage général de l'interface Map. Il fournit des performances de O (1) tandis que Treemap fournit des performances de O (log (n)). Par conséquent, HashMap est généralement plus rapide que TreeMap.

Articles recommandés

Ceci est un guide pour HashMap vs TreeMap. Nous discutons ici de l'introduction de HashMap vs TreeMap, des différences entre Hashmap et Treemap et d'un tableau de comparaison. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus–

  1. WebLogic vs JBoss
  2. Liste vs ensemble
  3. Git Fetch vs Git Pull
  4. Kafka vs Spark | Principales différences
  5. Top 5 des différences entre Kafka et Kinesis