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 comparaison | HashMap | TreeMap |
Syntaxe | classe publique HashMap étend AbstractMap implémente Map, Cloneable, Serializable | public class TreeMap étend les implémentations de AbstractMapNavigableMap, Cloneable, Serializable |
Commande | HashMap ne fournit aucune commande d'éléments. | Les éléments sont commandés dans un ordre naturel ou personnalisé. |
La vitesse | Vite | Lent |
Clés et valeurs nulles | Autorise 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émoire | HashMap 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 base | Il offre des fonctionnalités plus riches. |
Méthode de comparaison utilisée | Utilise 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ée | Carte, sérialisable et clonable | Carte navigable, sérialisable et clonable |
Performance | Donne une performance de O (1). | Fournit les performances de O (log n) |
Structure de données | Utilise 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ènes | Il 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'utilisation | Utilisé 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–
- WebLogic vs JBoss
- Liste vs ensemble
- Git Fetch vs Git Pull
- Kafka vs Spark | Principales différences
- Top 5 des différences entre Kafka et Kinesis