如何在Android中打印HashMap中的所有键和值?

Gop*_*ath 67 java android key hashmap

我是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);
   }
Run Code Online (Sandbox Code Playgroud)

在EditView iOS = 100中只打印.我想在EditText中打印所有键及其值.谁能告诉我我做错了什么?提前致谢.

Sha*_*dow 183

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


小智 12

这是因为您的TextView会在每次迭代时收到新文本,并且会丢弃先前的值.通过StringBuilder连接字符串并在循环后设置TextView值.你也可以使用这种类型的循环:

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


Abh*_*bhi 12

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));
}
Run Code Online (Sandbox Code Playgroud)


Sav*_*era 11

首先,您的代码中存在错误,即.你在for循环中缺少一个分号和一个右括号.

然后,如果您尝试将值附加到视图,则应使用textview.appendText()而不是.setText().

这里有一个类似的问题:如何在Android TextView中更改文本

  • 这是最好的答案,但也请参阅@Shadow了解如何正确使用Java 5 for和Map.Entry. (2认同)

小智 8

使用Gson可以更轻松地完成:

Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));
Run Code Online (Sandbox Code Playgroud)

结果如下:

I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}
Run Code Online (Sandbox Code Playgroud)


mde*_*dev 5

使用Java 8:

map.keySet().forEach(key -> System.out.println(key + "->" + result.get(key)));
Run Code Online (Sandbox Code Playgroud)


blu*_*llu 5

Java 8

map.entrySet().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)