web-dev-qa-db-fra.com

Java Équivalent à Python Dictionnaires

Je suis un utilisateur de longue date de Python et j'aime vraiment la façon dont les dictionnaires sont utilisés. Ils sont très intuitifs et faciles à utiliser. Existe-t-il un bon Java = équivalent aux dictionnaires de python? J'ai entendu parler de personnes utilisant des hashtaps et des tables de hachage. Quelqu'un pourrait-il expliquer les similitudes et les différences d'utilisation des tables de hachage et des hashmap par rapport aux dictionnaires de python?

82
slimbo

La classe dict de Python est une implémentation de ce que la documentation Python appelle de manière informelle " types de mappage ". En interne, dict est implémentée en utilisant une table de hachage.

La classe HashMap de Java est une implémentation de l'interface Map . En interne, HashMap est implémenté à l'aide d'une table de hachage.

Il y a quelques différences mineures dans la syntaxe, et je pense que les implémentations sont réglées légèrement différemment, mais dans l'ensemble, elles sont complètement interchangeables.

93
Daniel Pryden

L'idée du dictionnaire et de la carte est similaire. Les deux contiennent des éléments comme

key1:value1, key2:value2 ... and so on

En Java, Map est implémenté de différentes manières comme HashMap, ou TreeMap etc. put(), get() les opérations sont similaires

import Java.util.HashMap;

Map map = new HashMap();
// Put elements to the map
map.put("Ram", new Double(3434.34));
map.put("Krishna", new Double(123.22));
map.put("Hary", new Double(1378.00));
//to get elements
map.get("Krishna"); # =123.22
map.get("Hary"); # = 1378.00 

Voir la documentation de HashMap en Java8 https://docs.Oracle.com/javase/8/docs/api/Java/util/HashMap.html

22
Hary Bakta

Une différence entre les deux est que dict a des exigences plus strictes quant aux types de données pouvant agir comme clé. Java permettra à tout objet de fonctionner comme une clé - bien que vous deviez vous assurer que la méthode hashCode() de l'objet renvoie une valeur unique qui reflète son état interne. = Python nécessite des clés pour correspondre à 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.

5
Tim Clemons

Pour 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.

Récupérer le code de http://www.fluffycat.com/Java/HashMaps/ il semble qu'ils soient utilisés de manière très similaire, avec un peu d'extra Java plaque de chaudière.

4
Tabitha