Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 在java中,如何在键的值为字符串的映射中创建键的比较器?_List_Sorting_Tree_Key_Swap - Fatal编程技术网

List 在java中,如何在键的值为字符串的映射中创建键的比较器?

List 在java中,如何在键的值为字符串的映射中创建键的比较器?,list,sorting,tree,key,swap,List,Sorting,Tree,Key,Swap,在java中,如何在键的值为字符串的映射中创建键的比较器 因为我想交换地图中键的值 有没有办法对存储在字符串变量中的数字进行排序 TreeMapqbElementMap=newtreemap() 27525-1813年, 27525-3989, 27525-4083, 27525-4670, 27525-4911, 27526-558, 27526-1303, 27526-3641, 27526-4102, 27527-683, 27527-2411, 27527-4342 这是键

在java中,如何在键的值为字符串的映射中创建键的比较器

因为我想交换地图中键的值

有没有办法对存储在字符串变量中的数字进行排序

TreeMap
qbElementMap=newtreemap()

27525-1813年, 27525-3989, 27525-4083, 27525-4670, 27525-4911, 27526-558,
27526-1303, 27526-3641, 27526-4102, 27527-683, 27527-2411, 27527-4342

这是键列表,每个键的值都是一个列表。
现在,我如何按数字升序对该键进行排序

如果我想排序:1,2,11,20,31,3,10
我想要的as输出是:1,2,3,10,11,20,31
但是当我使用树映射的自动排序时,输出是:1,10,11,2,20,3,31

如何按数字升序排序


语言是java:)谢谢:)

您可能希望用自己的语言覆盖字符串的默认比较器函数


由于这可能会破坏其他字符串的比较,我建议定义一个NumericString类,该类包含该字符串并实现Comparable,并在映射中使用该类而不是字符串。

创建树映射时,请提供一个按预期方式排序的比较器

Map<String,List<QBFElement>> qbfElementMap = 
    new TreeMap<String,List<QBFElement>>(new Comparator<String>() {
        @Override
        public int compare(Object o1, Object o2) {
            // compare your strings in ways that you understand
            // presumably 11111-0000 sorts before 11111-0001
            // left as an exercise for the reader
        }
        @Override
        public boolean equals(Object o) {
            return this == o;
        }
    });
Map QbElementMap=
新树映射(新比较器(){
@凌驾
公共整数比较(对象o1、对象o2){
//以您理解的方式比较字符串
//推测11111-0000排序在11111-0001之前
//留给读者作为练习
}
@凌驾
公共布尔等于(对象o){
返回这个==o;
}
});

但是请阅读Comparator的文档,包括关于实现Serializable的部分,因为在Serializable数据结构中使用Comparator时需要特别注意,如TreeMap

No,您希望为树状图提供一个比较器,然后用于排序…您可能希望将问题标题更改为更类似于“如何更改树状图的排序机制”,并且不要发布您自己问题的副本,