如何克服freemarker treeset按字母顺序排序int键?

时间:2012-09-03 18:05:11

标签: java spring hashmap freemarker treeset

我有一个TreeSet。

字符串键实际上是int的字符串值,因为freemarker不允许int作为映射键,因为这是一个有序映射,它按如下方式对其进行排序:

1
10个
11个
12个
2
3
4
5
6
7
8
9个

任何人都知道如何绕过这个并按数字顺序打印?

由于

2 个答案:

答案 0 :(得分:2)

通过构造函数TreeMap(Comparator)使用适当的比较器构建地图。

(或TreeSet,如果这就是你的意思;你提到了集合和地图。)

答案 1 :(得分:2)

String通过lexicographic order在内部强制compareTo

  

按字典顺序比较两个字符串。

如果您不想这样做,请考虑指定自定义Comparator,例如

final Map<String, ...> map = new TreeMap<String, ...>(new Comparator<String>() {

  public int compare(final String a, final String b) {
    return Integer.valueOf(a).compareTo(Integer.valueOf(b));
  }
});