web-dev-qa-db-ja.com

HashMapのすべてのキーと値をAndroidで印刷する方法は?

私はAndroid開発のために非常に新しく、AndroidサンプルプロジェクトでHashMapを使用しようとしています。現在、Androidを学ぶためのサンプルプロジェクトを行っています。 HashMapにキーと値を保存するだけで、キーとその値をEditViewに表示したいです。サンプルプロジェクトでは、以下のコードに従いました。ただし、最初のキーと値は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);
   }

EditViewでは、iOS = 100は印刷のみです。すべてのキーとその値をEditTextで印刷したい。誰が私が間違っている場所を教えてもらえますか?前もって感謝します。

66
Gopinath

まず、コードにエラーがあります。 forループにセミコロンと右括弧がありません。

次に、ビューに値を追加しようとしている場合、.setText()の代わりにtextview.appendText()を使用する必要があります。

同様の質問がここにあります: Android TextViewのテキストを変更する方法

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

これは、TextViewがすべての反復で新しいテキストを受け取り、前の値が破棄されるためです。 StringBuilderによって文字列を連結し、ループ後にTextView値を設定します。また、このタイプのループを使用できます。

for (Map.Entry<String, String> e : map.entrySet()) {
    //to get key
    e.getKey();
    //and to get value
    e.getValue();
}
12
muffinmad
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));
}
12
Abhi

Gsonを使えば簡単にできます:

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

結果は次のようになります。

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

Java 8

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

Java 8の場合:

map.keySet().forEach(key -> System.out.println(key + "->" + result.get(key)));
5
mdev
    for (String entry : map.keySet()) {
      String value = map.get(entry);
      System.out.print(entry + "" + value + " ");
      // do stuff
    }
2
Sundresh

このコードはテスト済みで動作しています。

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

チャールズ。

2
ChopperCharles
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);
1
jeet
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.
1
Deepak Daniel

このコードを使用できます:

for (Object variableName: mapName.keySet()){
    variableKey += variableName + "\n";
    variableValue += mapName.get(variableName) + "\n";
}
System.out.println(variableKey + variableValue);

このコードは、すべてのキーが変数に保存されてから印刷されるようにします!

1
kakaday22

これをクリックしてHashMapのコンテンツが何であるかを知るすべての人にとって、toStringメソッド( docs )は実際にほとんどのオブジェクトで機能します。 (注:Java配列はオブジェクトではありません!)

そのため、これはデバッグの目的にはまったく問題ありません。

System.out.println(myMap.toString());

>>> {key1=value1, key2=value2}
0
virhonestum