Java 迭代hashmap';ArrayList Freemarker中的s
我有一个父Java 迭代hashmap';ArrayList Freemarker中的s,java,arraylist,hashmap,freemarker,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 Ha
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=new ArrayList();
映射数据_dummy=new HashMap();
数据输入(“名称”、“abc”);
数据输入(“姓氏”、“xyz”);
映射数据_dummy2=新的HashMap();
数据2.put(“名称”、“定义”);
数据2.put(“姓氏”、“pqr”);
国家。添加(数据);
添加(数据2);
我正在尝试使用语法进行迭代:
<#list countries as category>
<#assign keys = countries[category]?keys>
<#list keys as values>
${keys[values]}
</#list>
</#list>
${键[值]}
它不起作用,请告诉我如何解决这个问题。
谢谢
Amit尝试以下方法:
<#list countries as category>
<#assign keys = category?keys>
<#list keys as key>
${category.get(key)}
</#list>
</#list>
${category.get(key)}
好吧,你搞错了,错过了一些东西,但我看到你从那以后的评论中意识到了这一点。但是,另一个(目前被接受的)答案不是任何人都应该做的。由于您的键是String
-s,因此您可以使用someMap[someKey]
。甚至对于非字符串键someMap.get(someKey)
也只适用于特定的配置设置,这是非常不鼓励的,因为它将真正的Map
键与方法名称混合使用。一团糟someMap?api.get(someKey)
是现在更好的方法,因为这样方法名就不必污染密钥名称空间。(请注意,由于向后兼容的限制,它仍然需要一些额外的配置;手册对此进行了详细介绍。)添加迭代代码我正试图在freemarker模板引擎中使用代码${keys[values]}对它进行迭代:${category[key]}这是我的迭代代码。它对我来说很有用,但有一点小技巧:${category[key]}感谢您对旧版本的freemarker的支持,category[key]
是第2版的功能。3x@RichStone同意并感谢您的回答,请查看何时回答此问题以及何时提出此问题。答案不会随库的每个版本自动更新。@SMA如果我没有遵循此处的正确规则,很抱歉,但是由于在任何地方都没有提到该版本,因此可能会使试图复制此版本的人感到困惑。如果我直接编辑答案,例如在版本中添加提示,这会是更正确的方式吗?