Comment imprimer toutes les clés et les valeurs de HashMap sous Android?
je suis très nouveau pour le développement Android, et j'essaie d'utiliser HashMap dans Android sample project. Maintenant, je fais un exemple de projet pour apprendre l'androïde. Je stocke juste les clés et les valeurs dans HashMap, je veux montrer les clés et leurs valeurs dans EditView. J'ai suivi le code ci-dessous dans mon exemple de projet. Mais, la première touche et la valeur seulement l'impression dans EditView.
Map<String, String> map = new HashMap<String,String>();
map.put("iOS", "100");
map.put("Android", "101");
map.put("Java", "102");
map.put(".Net", "103");
Set keys = map.keySet();
for (Iterator i = keys.iterator(); i.hasNext(); ) {
String key = (String) i.next();
String value = (String) map.get(key);
textview.setText(key + " = " + value);
}
Dans EditView iOS = 100
est seulement l'impression. Je veux imprimer toutes les clés et leur valeur dans EditText. Peut quelqu'un peut-il me dire où je me trompe? Merci à l'avance.
13 réponses
D'abord, il y a des erreurs dans votre code, i.e. il manque un point-virgule et une parenthèse dans la boucle for.
Puis, si vous essayez d'ajouter des valeurs à la vue, vous devez utiliser textview.appendText(), au lieu de .setText ().
il y a une question similaire ici: comment changer le texte dans Android TextView
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do stuff
}
c'est parce que votre TextView reçoit un nouveau texte sur chaque itération et chaque valeur previuos jetée. Concaténer les chaînes par StringBuilder et définir la valeur TextView après boucle. Vous pouvez également utiliser ce type de boucle:
for (Map.Entry<String, String> e : map.entrySet()) {
//to get key
e.getKey();
//and to get value
e.getValue();
}
HashMap <Integer,Integer> hm = new HashMap<Integer,Integer>();
Set<Integer> keys = hm.keySet(); //get all keys
for(Integer i: keys)
{
System.out.println(hm.get(i));
}
Avec Java 8:
map.keySet().forEach(key -> System.out.println(key + "->" + result.get(key)));
Vous pouvez le faire plus facile avec Gson:
Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));
le résultat ressemblera à:
I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}
ce code est testé et fonctionne.
public void dumpMe(Map m) { dumpMe(m, ""); }
private void dumpMe(Map m, String padding) {
Set s = m.keySet();
java.util.Iterator ir = s.iterator();
while (ir.hasNext()) {
String key = (String) ir.next();
Object value = m.get(key);
if (value == null) continue;
if (value instanceof Map) {
System.out.println (padding + key + " = {");
dumpMe((Map)value, padding + " ");
System.out.println(padding + "}");
}
else if (value instanceof String ||
value instanceof Integer ||
value instanceof Double ||
value instanceof Float ||
value instanceof Long ) {
System.out.println(padding + key + " = " + value.toString());
}
else {
System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString());
// You could also throw an exception here
}
} // while
} // dumpme
Charles.
String text="";
for (Iterator i = keys.iterator(); i.hasNext()
{
String key = (String) i.next();
String value = (String) map.get(key);
text+=key + " = " + value;
}
textview.setText(text);
vous pouvez utiliser ce code:
for (Object variableName: mapName.keySet()){
variableKey += variableName + "\n";
variableValue += mapName.get(variableName) + "\n";
}
System.out.println(variableKey + variableValue);
ce code veillera à ce que toutes les clés soient stockées dans une variable et ensuite imprimées!
public void dumpMe(Map m) { dumpMe(m, ""); }
private void dumpMe(Map m, String padding)
{
Set s = m.keySet();
java.util.Iterator ir = s.iterator();
while (ir.hasNext())
{
String key = (String) ir.next();
AttributeValue value = (AttributeValue)m.get(key);
if (value == null)
continue;
if (value.getM() != null)
{
System.out.println (padding + key + " = {");
dumpMe((Map)value, padding + " ");
System.out.println(padding + "}");
}
else if (value.getS() != null ||
value.getN() != null )
{
System.out.println(padding + key + " = " + value.toString());
}
else
{
System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString());
// You could also throw an exception here
}
} // while
}
//This code worked for me.
for (String entry : map.keySet()) {
String value = map.get(entry);
System.out.print(entry + "" + value + " ");
// do stuff
}
pour tous ceux qui ont cliqué dessus pour savoir quel est le contenu de votre HashMap, la méthode toString
( docs ) fonctionne avec la plupart des objets. (remarque: un tableau java n'est pas un objet!)
donc, ce woks parfaitement amende à des fins de débogage:
System.out.println(myMap.toString());
>>> {key1=value1, key2=value2}