Как распечатать все ключи и значения из HashMap в Android?
Я очень новый для разработки Android, и я пытаюсь использовать HashMap в Android пример проекта. Теперь я делаю пример проекта для изучения 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. Может кто-нибудь пожалуйста, скажите мне где я делаю неправильно? Спасибо заранее.
13 ответов:
во-первых, есть ошибки в коде, т. е. в цикле for отсутствуют точка с запятой и закрывающая скобка.
затем, если вы пытаетесь добавить значения в представление, вы должны использовать textview.appendText(), вместо .setText ().
здесь есть аналогичный вопрос:как изменить текст в Android TextView
for (Map.Entry<String,String> entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); // do stuff }
это потому, что ваш TextView получает новый текст на каждой итерации и previuos значение выбрасывается. Объедините строки с помощью 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"}
этот код проверен и работает.
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);
вы можете использовать этот код:
for (Object variableName: mapName.keySet()){ variableKey += variableName + "\n"; variableValue += mapName.get(variableName) + "\n"; } System.out.println(variableKey + variableValue);этот код будет убедиться, что все ключи хранятся в переменной, а затем напечатано!
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 }
для всех, кто нажал на это, чтобы узнать, что содержимое вашего HashMap,
toStringметод ( docs) на самом деле работает с большинством объектов. (Примечание: массив java не является объектом!)Так что это прекрасно подходит для отладки:
System.out.println(myMap.toString()); >>> {key1=value1, key2=value2}
Comments