Différence entre HashMap et Hashtable en Java
Contenu
HashMap et Hashtable, les deux sont utilisés pour représenter un groupe d'objets qui sont représentés dans
Regardons le tableau de comparaison ci-dessous pour en savoir plus sur les différences entre HashMap et Hashtable.
- Tableau de comparaison
- Définition
- Différences Clés
- Similitudes
- Conclusion
Tableau de comparaison
Base de comparaison | HashMap | Hashtable |
---|---|---|
Implémenter / Étendre | La classe HashMap implémente l'interface Map et étend une classe AbstractMap. | Hashtable étend la classe Dictionary Legacy mais, il a été repensé et implémente désormais l'interface Map. |
Synchronisation | HashMap n'est pas synchronisé et, par conséquent, l'objet HashMap n'est pas threaded safe. | Hashtable est synchronisé et l'objet de Hashtable est donc thread-safe. |
Clés / Valeur | Une clé ne peut renvoyer Null qu'une seule fois, mais une valeur peut renvoyer Null n'importe quel nombre de fois. | Une clé ne peut pas renvoyer Null car elle est utilisée pour obtenir le code de hachage qui servira d'index de la table de hachage. Aucune valeur ne peut renvoyer Null. |
Capacité initiale par défaut | La capacité initiale par défaut de HashMap est de 16. | La capacité initiale par défaut de Hashtable est 11. |
Traverser | HashMap est traversé par Iterator. | Comme la classe Map, Hashtable ne prend pas non plus en charge directement Iterator pour le parcours et utilise donc Enumerator. |
Définition de HashMap
HashMap est une classe qui implémente le Carte interface et étend la Carte abstraite La classe utilise la table de hachage. L’objet de HashMap fait référence à une collection / un ensemble de / * K représente la clé et V représente la valeur * / class HashMap Le premier constructeur est un constructeur par défaut qui initialise un objet vide de HashMap avec une capacité par défaut de 16 et un taux de remplissage par défaut de 0,75. Le second constructeur initialise la carte de hachage avec la valeur de m. Le troisième constructeur crée une carte de hachage avec la capacité initiale correspondant à la valeur fournie dans l'argument «capacité». Le quatrième constructeur initialise la carte de hachage avec une capacité et un taux de remplissage fournis dans les paramètres. Voyons maintenant comment alimenter les entrées dans une carte de hachage. 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} Dans le code ci-dessus, vous pouvez voir que j'ai créé un objet HashMap vide hm avec capacité initiale et taux de remplissage par défaut. Ensuite, j'ai inséré quatre entrées dans la carte de hachage en utilisant la méthode put (K, V) qui mappe la clé sur la valeur. Vous pouvez constater que les entrées ne sont pas éditées dans l'ordre que vous leur donnez car l'ordre d'insertion n'est pas fixe. Maintenant, considérons un cas pour lequel vous avez déjà une entrée Hashtable est une classe qui étend la dictionnaire classe qui est une classe d'héritage et est réorganisée pour mettre en œuvre la Carte interface. La table de hachage utilise la table de hachage comme structure de données. Hashtable est similaire à HashMap car ici aussi l'objet de Hashtable fait référence à la collection d'entrées où chaque entrée est une paire de / * K spécifie la clé et V spécifie la valeur associée à la clé * / class Hashtable Dans le code ci-dessus, le premier constructeur est un constructeur par défaut qui crée un objet vide d'une classe Hashtable, sa taille par défaut est 11 et le taux de remplissage par défaut est 0,75. Le second constructeur crée une table de hachage dont la taille correspond à la valeur fournie dans le paramètre «size». Le troisième constructeur crée une table de hachage avec une taille et un taux de remplissage fournis dans le paramètre. Le quatrième constructeur initialise la table de hachage avec la valeur m. Voyons maintenant comment insérer le Hashtable ht = new Hashtable (); ht.put (new hashCode (2), 275); ht.put (nouveau hashCode (12), 250); ht.put (nouveau hashCode (16), 150); ht.put (new hashCode (8), 200); System.out.ln (ht); / * sortie * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Dans le code ci-dessus, j'ai créé un objet vide de Hashtable et inséré quatre entrées à l'aide de la méthode put (). A l'intérieur de la méthode de vente, j'ai appelé hashCode (), qui calcule et renvoie la valeur de code de hachage qui fera office d'index pour l'objet entry. Comme vous pouvez le constater, je n’ai pas mentionné la taille de la table de hachage; elle sera donc 11 par défaut. Ici aussi, l’ordre d’insertion n’est pas préservé et, par conséquent, lorsque les entrées ed ne sont pas affichées dans l’ordre où elles ont été alimentées. HashMap offre de meilleures performances, car ses objets ne sont pas synchronisés et que plusieurs threads peuvent y fonctionner simultanément. Par conséquent, il est plus rapide que Hashtable.Définition de Hashtable
Similitudes:
Conclusion: