在 ArrayList Freemarker 中迭代 hashmap
Iterate hashmap's in ArrayList Freemarker
我有一个 parent ArrayList
和 2 child 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>
它不工作,请告诉我如何解决这个问题。
谢谢
阿米特
试试这样的东西:
<#list countries as category>
<#assign keys = category?keys>
<#list keys as key>
${category.get(key)}
</#list>
</#list>
好吧,你搞混了,错过了一些东西,但我看到你在评论中意识到了这一点。但是,另一个(目前接受的)答案不是任何人都应该做的。由于您的密钥是 String
-s,您可以只使用 someMap[someKey]
。甚至对于非字符串键 someMap.get(someKey)
也只适用于特定的配置设置,强烈建议不要这样做,因为它将真正的 Map
键与方法名称混合在一起。一团糟。 someMap?api.get(someKey)
是当今更好的方法,因为方法名称不必污染键命名空间。 (请注意,由于向后兼容性限制,它仍然需要一些额外的配置;手册对此进行了很好的介绍。)
我有一个 parent ArrayList
和 2 child 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>
它不工作,请告诉我如何解决这个问题。 谢谢 阿米特
试试这样的东西:
<#list countries as category>
<#assign keys = category?keys>
<#list keys as key>
${category.get(key)}
</#list>
</#list>
好吧,你搞混了,错过了一些东西,但我看到你在评论中意识到了这一点。但是,另一个(目前接受的)答案不是任何人都应该做的。由于您的密钥是 String
-s,您可以只使用 someMap[someKey]
。甚至对于非字符串键 someMap.get(someKey)
也只适用于特定的配置设置,强烈建议不要这样做,因为它将真正的 Map
键与方法名称混合在一起。一团糟。 someMap?api.get(someKey)
是当今更好的方法,因为方法名称不必污染键命名空间。 (请注意,由于向后兼容性限制,它仍然需要一些额外的配置;手册对此进行了很好的介绍。)