272 votes

Comment créer un dictionnaire en Java ?

J'essaie d'implémenter un dictionnaire (comme dans le livre physique). J'ai une liste de mots et leurs significations.

Quelle structure/type de données Java fournit-il pour stocker une liste de mots et leur signification sous forme de paires clé/valeur ?

Comment, étant donné une clé, puis-je trouver et renvoyer la valeur ?

34 votes

Eh bien, dans l'esprit de se concentrer sur la question, et non sur l'utilisateur, je vote pour la réouverture. Je suis sûr que cet utilisateur a terminé le cours de toute façon. ;) C'est un duplicata de stackoverflow.com/questions/1540673/ mais je pense que les réponses ici sont meilleures.

351voto

arshajii Points 65653

Vous voulez un Map<String, String> . Les classes qui implémentent le Map incluent (mais ne sont pas limités à) :

Chacune est conçue/optimisée pour certaines situations (consultez leur documentation respective pour plus d'informations). HashMap est probablement le plus courant, le plus courant par défaut.

Par exemple (en utilisant un HashMap ) :

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));

type of animal

1 votes

@Cruncher Il implémente également Map (vérifiez la javadoc)

1 votes

@arshajii j'ai un doute nous mappons manuellement toutes les chaînes dans le dictionnaire ou je peux dire que nous stockons manuellement la signification de tous les mots. Ma question est donc la suivante : existe-t-il un moyen, comme les fichiers db (dump) du dictionnaire, de récupérer les mots et leur signification/définition afin d'éviter d'ajouter manuellement la signification de chaque mot ?

0 votes

@VighaneshGursale Vous devrez utiliser une méthode put pour construire votre structure de données pendant l'exeuction. Considérez qu'une commande put lit le fichier sur le disque et le place en mémoire (ram) pour que vous puissiez travailler avec lui. Si vous avez un fichier que vous voulez charger en tant que structure de données sur le chargement automatique, vous devrez regarder dans java spring mais c'est complexe.

94voto

SmartK8 Points 587

Cela crée un dictionnaire de texte (chaîne de caractères) :

Map<String, String> dictionary = new HashMap<String, String>();

vous l'utilisez ensuite comme un :

dictionary.put("key", "value");
String value = dictionary.get("key");

Cela fonctionne mais donne une erreur : vous devez garder la classe du constructeur identique à celle de la déclaration. Je sais qu'elle hérite de la classe parente mais, malheureusement, cela donne une erreur au moment de l'exécution.

Map<String, String> dictionary = new Map<String, String>();

Cela fonctionne correctement.

3 votes

dictionary["key"] ne fonctionnera pas - il devrait être dictionary.get("key") .

27 votes

Vrai, probablement un peu de C# s'est glissé dedans :)

11voto

Puyover Points 304

Utilisez Interface de carte et une mise en œuvre comme HashMap

1 votes

Un lien vers une solution est le bienvenu, mais veillez à ce que votre réponse soit utile sans ce lien : ajouter un contexte autour du lien pour que les autres utilisateurs aient une idée de ce qu'il s'agit et de la raison de sa présence, puis citez la partie la plus pertinente de la page vers laquelle vous établissez un lien au cas où la page cible ne serait pas disponible. Les réponses qui ne sont guère plus qu'un lien peuvent être supprimées.

9voto

Cruncher Points 5156

Il y a un dictionnaire des classes abstraites

http://docs.oracle.com/javase/6/docs/api/java/util/Dictionary.html

Toutefois, cela nécessite une mise en œuvre.

Java nous offre une belle implémentation appelée Hashtable.

http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html

7 votes

Dictionary est obsolète et aucune des implémentations ne l'étend.

0 votes

@asgs qu'est-ce que ça veut dire ? Je peux quand même l'utiliser dans Java 11 ? (désolé, je ne suis pas très familier avec Java)

1 votes

@cryanbhu Le dictionnaire est déprécié dans 11 aussi. La dépréciation a lieu pour diverses raisons, comme des problèmes de sécurité, des bogues de mise en œuvre/conception ou de meilleures alternatives. Vous pouvez en savoir plus sur Dépréciation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X