Wie drucke ich alle Schlüssel und Werte von HashMap in Android?

Lesezeit: 3 Minuten

Benutzer-Avatar
Gopinath

Ich bin sehr neu in der Android-Entwicklung und versuche, HashMap in einem Android-Beispielprojekt zu verwenden. Jetzt mache ich ein Beispielprojekt zum Lernen von Android. Ich speichere nur Schlüssel und Werte in HashMap, ich möchte die Schlüssel und ihre Werte in EditView anzeigen. Ich habe den folgenden Code in meinem Beispielprojekt befolgt. Aber zuerst werden Schlüssel und Wert nur in EditView gedruckt.

   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);
   }

In EditView iOS = 100 druckt nur. Ich möchte alle Schlüssel und ihren Wert in EditText drucken. Kann mir bitte jemand sagen wo ich falsch liege? Danke im Voraus.

  • Siehe diese Frage und viele andere: stackoverflow.com/questions/1066589/…

    – Anton

    18. Januar 2012 um 12:09 Uhr

  • Hallo Gopinath!! Ihr Code zum Abrufen und Festlegen des Hash-Map-Schlüsselwerts ist korrekt, aber Sie setzen diesen Wert auf nur eine textView .

    – Deepak Sharma

    18. Januar 2012 um 12:10 Uhr

  • Dank an alle. Ich habe die Antwort bekommen. Noch einmal danke ich Ihnen allen.

    – Gopinat

    18. Januar 2012 um 12:22 Uhr


for (Map.Entry<String,String> entry : map.entrySet()) {
  String key = entry.getKey();
  String value = entry.getValue();
  // do stuff
}

Das liegt daran, dass Ihre TextView bei jeder Iteration neuen Text erhält und vorherige Werte weggeworfen werden. Verketten Sie Strings mit StringBuilder und setzen Sie den TextView-Wert nach der Schleife. Sie können auch diese Art von Schleife verwenden:

for (Map.Entry<String, String> e : map.entrySet()) {
    //to get key
    e.getKey();
    //and to get value
    e.getValue();
}

Mit Gson geht es einfacher:

Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));

Das Ergebnis sieht folgendermaßen aus:

I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}

  • Hilfreich. Danke vielmals.

    – Puja

    19. August 2020 um 18:49 Uhr

Benutzer-Avatar
Savino Sguera

Erstens gibt es Fehler in Ihrem Code, dh. Ihnen fehlt ein Semikolon und eine schließende Klammer in der for-Schleife.

Wenn Sie dann versuchen, Werte an die Ansicht anzuhängen, sollten Sie textview.appendText() anstelle von .setText() verwenden.

Hier gibt es eine ähnliche Frage: So ändern Sie Text in Android TextView

Benutzer-Avatar
Abhi

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));
}

  • Behebt nicht das eigentliche Problem mit dem Code des OP, der fast identisch ist.

    – Benutzer207421

    31. März 2020 um 4:07 Uhr

Benutzer-Avatar
blau hallu

Java 8

map.entrySet().forEach(System.out::println);

  • Behebt nicht das eigentliche Problem mit dem Code des OP, der fast identisch ist.

    – Benutzer207421

    31. März 2020 um 4:07 Uhr

Mit Java8:

map.keySet().forEach(key -> System.out.println(key + "->" + map.get(key)));

  • Könnten Sie bitte in einer Erklärung bearbeiten, warum dieser Code die Frage beantwortet? Nur-Code-Antworten sind entmutigtweil sie die Lösung nicht lehren.

    – Nathan Tuggy

    2. November 2016 um 23:25 Uhr

  • OP möchte alle Schlüssel und Wertepaare drucken. Ich glaube nicht, dass es hier einer Erklärung bedarf. Es ist ein sehr alter Thread, schon beantwortet, und auch keine Hirnsache. Ich habe ja schon geschrieben falls jemand eine Lösung in Java8 sucht, er/sie kann sowas machen.

    – mdev

    4. November 2016 um 1:37 Uhr

  • mdev – Es gibt hier viele Neulinge, die von einer Erklärung profitieren würden, auch wenn es für einen Experten wie Sie offensichtlich ist. Wenn Sie eine Erklärung geliefert hätten, hätten Sie vielleicht entdeckt, dass Ihre Lösung falsch ist; (Die “Ergebnis”-Variable ist nicht spezifiziert). Es sollte sein: map.keySet().forEach(key -> System.out.println(key + “->” + map.get(key))); Wobei -> die Parameter (linke Seite) von der Implementierung (rechte Seite) trennt. Sehen howtodoinjava.com/java8/foreach-method-example und docs.oracle.com/javase/tutorial/java/javaOO/…

    – Tihamer

    30. März 2020 um 18:36 Uhr


  • Tihamer Danke für den Tippfehler. Ich habe die Antwort bearbeitet.

    – mdev

    31. März 2020 um 3:36 Uhr

  • Das will der OP Anzeige alle Schlüssel und Werte in einem Textfeld, und sein einziges Problem liegt in diesem Teil davon.

    – Benutzer207421

    31. März 2020 um 4:08 Uhr

1176420cookie-checkWie drucke ich alle Schlüssel und Werte von HashMap in Android?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy