如何对HashMap freemarker模板的值进行排序

ers*_*hio 7 java freemarker map

我在java中有这个HashMap:

HashMap<String, String> map = new HashMap<String, String>();

     map.put("k1",  "3");
     map.put("k2", "4");
     map.put("k3", "2");
     map.put("k4", "6");
     map.put("k5", "1");
     map.put("k6", "5");
Run Code Online (Sandbox Code Playgroud)

我在这种模式下使用freemarker模板打印:

<#list map?values as v>
${v} - 
</#list>
Run Code Online (Sandbox Code Playgroud)

但它按此顺序打印:

2 - 6 - 1 - 5 - 3 - 4
Run Code Online (Sandbox Code Playgroud)

我想按此顺序打印:

1 - 2 - 3 - 4 - 5  -6
Run Code Online (Sandbox Code Playgroud)

如何使用freemarker模板对值进行排序?

Lau*_*eyn 6

试试这个:

<#list map?values?sort as v>
    ${v} - 
</#list>
Run Code Online (Sandbox Code Playgroud)

注意sort内置函数用于值序列.


pla*_*nes 2

这种行为是可以预见的,因为 HashMap 没有排序。正如评论中所指出的,SortedMap(例如 TreeMap)将根据键进行排序。因此,您将必须删除一些代码来对此进行排序。

请参阅按值对 Map<Key, Value> 进行排序 (Java)