我有以下数据:
"1" --> "Label 1"
"2" --> "Label 2"
"11" --> "Label 11"
"22" --> "Label 22"
我希望将其存储在一个地图中,该地图将强制执行整数顺序,而不是字典顺序。 Java是否已经为此目的提供了* Map?
答案 0 :(得分:2)
将TreeMap与自定义Comparator
一起使用。
像:
TreeMap<String, String> map = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(Integer.parseInt(o1), Integer.parseInt(o2));
}
});
密钥将根据传递的Comparator
订购。
以上只是示例,但根据您的用例,您可以更改compare()
的实施,以反映您的业务需求。
答案 1 :(得分:1)
是的,您可以使用TreeMap
或ConcurrentSkipListMap
,每个都实现SortedMap
,并允许您在地图创建时提供Comparator
。
将其实现为从Integer
作为键,或将其保留为String
,但提供一个比较器,通过转换为Integer
并使用它进行比较。
我认为使用Integer
作为关键会更干净,但它不会产生太大的影响。
如果沿着String
路线行驶,请按照这样做。它与Huko的代码相同,但差异可能导致溢出的大负值不会出错。
TreeMap<String, String> map = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.parseInt(o1).compareTo(Integer.parseInt(o2));
}
});
编辑:Huko的代码现在也考虑到了这一点。