Comment puis-je imprimer toutes les valeurs dans un TreeMap?
J'ai un projet sur lequel je travaille pour ma classe Java (évidemment) et je dois avoir manqué la conférence sur la façon d'interagir avec les Arborescences. Je n'ai aucune idée de ce que je suis en train de faire avec cette partie et je n'ai pas trouver beaucoup d'aide de Google.
Pour le premier cas dans le programme, j'ai l'impression de toutes les valeurs d'une TreeMap. Voici le code que j'ai été fournis et le travail que j'ai fait avec elle. Tout dans le cas où A est la mienne, mais il ne fonctionne pas. Toute aide serait appréciée.
import java.util.Scanner;
import java.util.Set;
import java.util.Map;
import java.util.TreeMap;
import java.io.File;
import java.io.FileNotFoundException;
public class prog7 {
public static void main(String args[])
throws FileNotFoundException
{
Scanner kb=new Scanner(System.in);
/*here, add code to declare and create a tree map*/
TreeMap treeMap = new TreeMap();
/*here, add code to declare a variable and
let it be the key set of the map
*/
String key;
//temporary variables
String tempWord;
String tempDef;
//the following code reads data from the file glossary.txt
//and saves the data as entries in the map
Scanner infile=new Scanner(new File("glossary.txt"));
while(infile.hasNext())
{
tempWord=infile.nextLine();
tempDef=infile.nextLine();
/*here, add code to add tempWord and tempDef
as an entry in the map
*/
treeMap.put(tempWord, tempDef);
}
infile.close();
while(true)
{
System.out.println();
System.out.println();
//show menu and prompt message
System.out.println("Please select one of the following actions:");
System.out.println("q - Quit");
System.out.println("a - List all words and their definitons");
System.out.println("b - Enter a word to find its definition");
System.out.println("c - Add a new entry");
System.out.println("d - Delete an entry");
System.out.println("Please enter q, a, b, c or d:");
String selection=kb.nextLine(); //read user's selection
if (selection.equals("")) continue; //if selection is "", show menu again
switch (selection.charAt(0))
{
case 'q':
System.out.println("\nThank you.");
return;
/*write code for the cases 'a','b','c' and 'd'
so that the program runs as in the sample run
*/
case 'a':
for (String treeKey : treeMap.keySet())
System.out.println(treeKey);
break;
+1 pour l'aide aux devoirs et la balise de poster le code que vous avez jusqu'à présent.
OriginalL'auteur Lish | 2011-04-22
Vous devez vous connecter pour publier un commentaire.
Itérer sur les entrySet plutôt que le jeu de clés. Vous obtenez un ensemble de
Map.Entry<K, V>
qui ont commodegetKey()
etgetValue()
méthodes.Cela dit, Java standard de la Carte des implémentations de mise en œuvre de toString() qui fait ce que vous voulez. Bien sûr, je pense que vous n'aurez qu'à obtenir des points pour les réimplanter, pas pour évitant habilement...
Non, c'est la partie de la carte: download.oracle.com/javase/6/docs/api/java/util/...
ahh. Intéressant. Je devrais peut-être essayer si je ne peux pas obtenir quelque chose d'autre travail. Je veux essayer et s'en tenir à ce que le professeur attend autant que je le peux. Merci pour le heads up. Je vais certainement regarder de plus si je ne l'utilise pas maintenant.
Sauf si vous avez plus de contraintes que celles que vous avez décrit, le entrySet devrait être bon: vous avez encore le faire la plupart du travail et il est plus efficace qu'un appel à la
get(key)
pour chaque clé. J'ai édité mon post pour ajouter un exemple.OriginalL'auteur Xr.
Vous pouvez utiliser entrySet(). Chaque Carte en java cette méthode.
OriginalL'auteur Lynch
Qui vous donne les clés.
Maintenant dans cette boucle, chaque valeur de la
treeMap
l'aide de la clé (treeKey
), et de l'imprimer.OriginalL'auteur Brian Roach
Vous pouvez utiliser
treeMap.get(treeKey)
à l'intérieur de la boucle pour obtenir la valeur de la clé. Puisque cette valeur est une chaîne, vous pourriez faire quelque chose comme:Oui, je donne un exemple println dans mon dernier edit ainsi, vous pouvez voir comment le faire. J'espère que c'est utile.
Vous êtes les bienvenus. Bonne chance avec la cession.
ah, oui. ce serait plus logique.
OriginalL'auteur dcp
Une itération sur l'ensemble de clés et alors de récupérer chaque valeur est moins efficace qu'une itération sur la jeu d'entrées (
getEntries()
). Dans le premier cas,getValue()
devrez effectuer une nouvelle recherche à chaque fois, alors quegetEntries()
suffit de retourner la totalité du contenu de la carte.Analyseurs statiques tels que FindBugs vous donnera un avertissement si vous essayez de récupérer une valeur dans une itération sur la carte de clés.
File: Z:\CS121\Project 7\prog7.java [line: 79] Error: Z:\CS121\Project 7\prog7.java:79: cannot find symbol symbol : method getEntries() location: class java.util.TreeMap
Désolé. La méthode est appelée
entrySet
. Mais honnêtement, vous auriez été en mesure de trouver vous-même. Les docs de l'API de la classe Map ne sont pas difficiles à trouver.OriginalL'auteur JesperE
pas spécifiquement sur les Arborescences, mais à propos de Cartes en général, j'aime bien cette première réponse, à l'aide de Goyave: Convertir java Carte personnalisée clé=valeur de chaîne
OriginalL'auteur ycomp