在ArrayList Freemarker中迭代hashmap

时间:2015-04-14 11:36:36

标签: java arraylist hashmap freemarker

我有一个父ArrayList和一个孩子HashMap

List countries = new ArrayList();

Map<String, String> data_dummy = new HashMap<String, String>();
data_dummy.put("name", "abc");
data_dummy.put("surname", "xyz");

Map<String, String> data_dummy2 = new HashMap<String, String>();
data_dummy2.put("name", "def");
data_dummy2.put("surname", "pqr");
countries.add(data_dummy);
countries.add(data_dummy2);

我正在尝试使用语法进行迭代:

 <#list countries as category>
   <#assign keys = countries[category]?keys>
   <#list keys as values>
     ${keys[values]}
  </#list>
</#list>

它不起作用,请告诉我如何解决这个问题。 谢谢 阿米特

2 个答案:

答案 0 :(得分:0)

尝试类似:

 <#list countries as category>
    <#assign keys = category?keys>
    <#list keys as key>
         ${category.get(key)}
    </#list>
 </#list>

答案 1 :(得分:0)

嗯,你已经混淆了并错过了一些事情,但我发现你已经意识到这一点。但是,另一个(目前接受的)答案不是任何人应该做的。由于您的密钥为String - s,因此您只需使用someMap[someKey]即可。即使对于非字符串键someMap.get(someKey)也只适用于特定的配置设置,强烈建议不要这样做,因为它会将真正的Map键与方法名称混合在一起。一团糟。 someMap?api.get(someKey)现在是更好的方法,因为方法名称不必污染密钥命名空间。 (请注意,由于向后兼容性限制,它仍然需要一些额外的配置;手册涵盖的很好。)