La différence entre Hashmap et Hashset est la question la plus fréquemment posée dans les entretiens Java. Si le cadre de collection et l'interview multithread ne sont pas impliquées, on peut dire qu'elle est incomplète. Le problème avec le cadre de collection n'implique pas de hashset et de hashmap, et il peut être considéré comme incomplet. Hashmap et HashSet font tous deux partie du cadre de collection, qui nous permettent d'utiliser des collections d'objets. Le cadre de collection a sa propre interface et sa mise en œuvre, qui sont principalement divisées en interface de définition, interface de liste et interface de file d'attente. Ils ont leurs propres caractéristiques. L'ensemble ne permet pas aux objets d'avoir des valeurs en double et la liste permet des doublons. Il index les objets de l'ensemble. Le principe de travail de la file d'attente est l'algorithme FCFS (premier arrivé, premier serveur).
Regardons d'abord ce que sont HashMap et Hashset, puis comparons les différences entre elles.
Qu'est-ce que Hashset
HashSet implémente l'interface SET, qui ne permet pas de valeurs en double dans l'ensemble. Lorsque nous mentionnons HashSet, la première chose est de s'assurer que l'objet remplace les méthodes equals () et hashcode () avant de stocker l'objet dans le HashSet, afin que l'objet puisse être comparé si les valeurs de l'objet sont égales, afin de s'assurer qu'il n'y a pas d'objets égaux stockés dans l'ensemble. Si nous ne réécrivons pas ces deux méthodes, l'implémentation par défaut de cette méthode sera utilisée.
La méthode publique Boolean Add (Object O) est utilisée pour ajouter des éléments dans l'ensemble. Lorsque la valeur de l'élément est répétée, elle reviendra immédiatement False, et si elle est ajoutée avec succès, il renvoie True.
Qu'est-ce que Hashmap
Hashmap implémente l'interface de carte, qui mappe les paires de valeurs clés. Les clés en double ne sont pas autorisées sur la carte. Il existe deux implémentations de base de l'interface MAP, HashMap et Treemap. Treemap enregistre l'ordre des objets, tandis que Hashmap ne peut pas. Hashmap permet aux clés et aux valeurs d'être nulles. Hashmap est non synchronisé, mais le cadre de collecte fournit des méthodes pour garantir que HashMap est synchronisé, de sorte que lorsque plusieurs threads accèdent à HashMap en même temps, il peut garantir qu'un seul thread modifie la carte.
La méthode de l'objet public (clé d'objet, valeur de l'objet) est utilisée pour ajouter des éléments à la carte.
Vous pouvez lire cet article pour voir comment fonctionne HashMap, et cet article pour voir comment HashMap et Hashtable sont différents.
La différence entre le hashset et le hashmap
| * Hashmap * | * Hashset * |
| Hashmap implémente l'interface de la carte | HashSet implémente l'interface |
| Hashmap pour stocker les paires de valeurs clés | Hashset uniquement stocke les objets |
| Utilisez la méthode put () pour mettre des éléments en carte | Utilisez la méthode Add () pour mettre des éléments dans l'ensemble |
| HashMap utilise des objets clés pour calculer les valeurs de code de hash | HashSet utilise des objets membres pour calculer les valeurs de code hash. Le HashCode peut être le même pour deux objets, donc la méthode equals () est utilisée pour juger de l'égalité des objets. Si les deux objets sont différents, retournez False. |
| Hashmap est plus rapide car il utilise la seule clé pour obtenir l'objet | Hashset est plus lent que Hashmap |
Si vous connaissez d'autres différences, veuillez laisser un message.
Lien original: JavareVisited