List 在java中,如何在键的值为字符串的映射中创建键的比较器?
在java中,如何在键的值为字符串的映射中创建键的比较器 因为我想交换地图中键的值 有没有办法对存储在字符串变量中的数字进行排序 TreeMapList 在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 这是键
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时需要特别注意,如TreeMapNo,您希望为树状图提供一个比较器,然后用于排序…您可能希望将问题标题更改为更类似于“如何更改树状图的排序机制”,并且不要发布您自己问题的副本,