私は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で印刷したい。誰が私が間違っている場所を教えてもらえますか?前もって感謝します。
まず、コードにエラーがあります。 forループにセミコロンと右括弧がありません。
次に、ビューに値を追加しようとしている場合、.setText()の代わりにtextview.appendText()を使用する必要があります。
同様の質問がここにあります: Android TextViewのテキストを変更する方法
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do stuff
}
これは、TextViewがすべての反復で新しいテキストを受け取り、前の値が破棄されるためです。 StringBuilderによって文字列を連結し、ループ後にTextView値を設定します。また、このタイプのループを使用できます。
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));
}
Gsonを使えば簡単にできます:
Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));
結果は次のようになります。
I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}
Java 8
map.entrySet().forEach(System.out::println);
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
}
このコードはテスト済みで動作しています。
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
チャールズ。
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.
このコードを使用できます:
for (Object variableName: mapName.keySet()){
variableKey += variableName + "\n";
variableValue += mapName.get(variableName) + "\n";
}
System.out.println(variableKey + variableValue);
このコードは、すべてのキーが変数に保存されてから印刷されるようにします!
これをクリックしてHashMapのコンテンツが何であるかを知るすべての人にとって、toString
メソッド( docs )は実際にほとんどのオブジェクトで機能します。 (注:Java配列はオブジェクトではありません!)
そのため、これはデバッグの目的にはまったく問題ありません。
System.out.println(myMap.toString());
>>> {key1=value1, key2=value2}