J'utilise Python depuis longtemps et j'aime beaucoup la façon dont les dictionnaires sont utilisés. Ils sont très intuitifs et faciles à utiliser. Existe-t-il un bon équivalent Java aux dictionnaires de python? J'ai entendu parler de personnes utilisant des hashmaps et des hashtables. Quelqu'un pourrait-il expliquer les similitudes et les différences entre l'utilisation des hashtables et des hashmaps par rapport aux dictionnaires de python?
la source
L'idée du dictionnaire et de la carte est similaire. Les deux contiennent des éléments comme
En Java,
Map
est implémenté de différentes manières commeHashMap
, ouTreeMap
etc. lesput(), get()
opérations sont similairesVoir la documentation de HashMap dans java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
la source
Autant que je sache (je n'utilise pas réellement Java), les dictionnaires ne sont qu'un autre nom pour une table de hachage / table de hachage.
En récupérant le code de http://www.fluffycat.com/Java/HashMaps/, il semble qu'ils soient utilisés d'une manière très similaire, avec un peu plus de java.
la source
Une différence entre les deux est que les
dict
exigences sont plus strictes quant aux types de données pouvant agir comme une clé. Java permettra à tout objet de fonctionner comme une clé - bien que vous deviez vous assurer que lahashCode()
méthode de l'objet renvoie une valeur unique qui reflète son état interne. Python nécessite que les clés correspondent à sa définition de hashable , qui spécifie que le code de hachage de l'objet ne doit jamais changer au cours de sa durée de vie.la source
hashCode()
méthode Java ou dans une__hash__()
méthode Python , vous devriez essayer de renvoyer une valeur unique qui reflète l'état interne. Dans Java ou Python, si vous avez un objet mutable, il ne devrait probablement pas être une clé de table de hachage, il est donc logique de lever une exception à partir des méthodeshashCode()
ou__hash__()
.