Je suis très nouveau pour le développement de Android et j'essaie d'utiliser HashMap dans l'exemple de projet Android. Maintenant, je fais un exemple de projet pour apprendre Android. Je viens de stocker 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, première clé et valeur uniquement 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
n'imprime que. Je veux imprimer toutes les clés et leur valeur dans EditText. Quelqu'un peut-il s'il vous plaît me dire où je me trompe? Merci d'avance.
Premièrement, il y a des erreurs dans votre code, c'est-à-dire. il vous manque un point-virgule et une parenthèse fermante dans la boucle for.
Ensuite, 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 à chaque itération et chaque valeur précédente est rejetée. Concaténez des chaînes par StringBuilder et définissez la valeur TextView après la boucle. Aussi, vous pouvez 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));
}
Vous pouvez le faire plus facilement avec Gson:
Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));
Le résultat ressemblera à:
I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}
Java 8
map.entrySet().forEach(System.out::println);
Avec Java 8:
map.keySet().forEach(key -> System.out.println(key + "->" + result.get(key)));
for (String entry : map.keySet()) {
String value = map.get(entry);
System.out.print(entry + "" + value + " ");
// do stuff
}
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);
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.
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 fera en sorte que toutes les clés soient stockées dans une variable puis imprimées!
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. (note: un tableau Java n'est pas un objet!)
Donc, cela fonctionne parfaitement pour le débogage:
System.out.println(myMap.toString());
>>> {key1=value1, key2=value2}