如何在地图中创建键的比较器,其中键的值是java中的字符串?
因为我想交换地图中键的值?
有没有办法对存储在字符串变量中的数字进行排序?
TreeMap的<String,List<QBFElement>> qbfElementMap = new TreeMap<String, List<QBFElement>>();
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
我想输出的是:1,2,3,10,11,20,31
但是当我使用treemap的autosort输出时:1,10,11,2,20,3,31
我怎样才能按数字升序排序?
,语言是java :)谢谢:)
答案 0 :(得分:1)
创建TreeMap时,请提供一个按照您期望的方式进行排序的Comparator。
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;
}
});
但是请阅读Comparator的文档,包括有关实现Serializable的文档,因为在可序列化数据结构中使用Comparator时会特别注意,比如TreeMap
答案 1 :(得分:0)
您可能希望使用自己的字符串覆盖String的默认比较器函数。
由于这可能搞砸了其他字符串的比较,我建议定义一个包含String的NumericString类,并实现Comparable并在地图中使用它而不是String。