Java Map数据结构,用于识别存储为字符串的整数的顺序

时间:2014-11-13 17:04:18

标签: java map

我有以下数据:

"1" --> "Label 1"
"2" --> "Label 2"
"11" --> "Label 11"
"22" --> "Label 22"

我希望将其存储在一个地图中,该地图将强制执行整数顺序,而不是字典顺序。 Java是否已经为此目的提供了* Map?

2 个答案:

答案 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)

是的,您可以使用TreeMapConcurrentSkipListMap,每个都实现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的代码现在也考虑到了这一点。