Comment créez-vous un dictionnaire en Java? [fermé]


236

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 retourner la valeur?


24
Eh bien, dans l'esprit de me concentrer sur la question, pas sur l'utilisateur, je vote pour rouvrir. Je suis sûr que cet utilisateur a maintenant terminé le cours. ;) C'est un doublon de stackoverflow.com/questions/1540673/… , mais je pense que les réponses ici sont meilleures.
Adi Inbar

Réponses:


313

Vous en voudrez un Map<String, String>. Les classes qui implémentent l' Mapinterface incluent (mais ne sont pas limitées à):

Chacun est conçu / optimisé pour certaines situations (consultez leurs documents respectifs pour plus d'informations). HashMapest probablement le plus courant; le go-to par défaut.

Par exemple (en utilisant a HashMap):

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

1
@Cruncher Il implémente également Map(vérifiez le javadoc)
arshajii

1
@arshajii j'ai un doute, nous mappons manuellement toutes les chaînes du dictionnaire ou je peux dire que nous stockons manuellement le sens de tous les mots. Donc ma question est, existe-t-il un moyen comme les fichiers db (dump) du dictionnaire pour récupérer les mots et leur signification / définition afin que nous puissions éviter d'ajouter le sens de chaque mot manuellement
Vighanesh Gursale

@VighaneshGursale Vous devrez utiliser une méthode put pour construire votre structure de données pendant l'exécution. Considérez une commande put comme la lecture du fichier à partir du disque et sa mise en mémoire (ram) afin que vous puissiez l'utiliser. Si vous avez un fichier que vous souhaitez charger en tant que structure de données sur le chargement automatique, vous devrez examiner le printemps java mais son complexe.
Dan Ciborowski - MSFT

5
Soit dit en passant, vous n'avez en fait pas besoin d'inclure <String, String> la deuxième fois. Vous pouvez juste faireMap<String, String> map = new HashMap<>();
Samuel Noyes

Vous avez oublié de mentionner ConcurrentHashMap que vous préférez utiliser sur Hashtable
Arsenius

80

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

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

vous l'utilisez ensuite comme:

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

Fonctionne mais donne une erreur dont vous avez besoin pour garder la classe constructeur identique à la classe de déclaration. Je sais qu'elle hérite de la classe parent mais, malheureusement, elle donne une erreur sur l'exécution.

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

Cela fonctionne correctement.


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

21
C'est vrai, probablement du C # s'est glissé :)
SmartK8

12

Utilisez l' interface Map et une implémentation comme HashMap


1
Un lien vers une solution est le bienvenu, mais assurez-vous que votre réponse est utile sans lui: ajoutez du contexte autour du lien pour que vos collègues aient une idée de ce que c'est et pourquoi il est là, puis citez la partie la plus pertinente de la page que vous '' relier à au cas où la page cible n'est pas disponible. Les réponses qui ne sont guère plus qu'un lien peuvent être supprimées.
FelixSFD

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.