【发布时间】:2017-04-26 09:45:17
【问题描述】:
我想实现我的自定义比较器以这种特殊方式对键映射进行排序:
1
2
3
4
4a
4b
5
6
11
12
12a
...
而且我不知道该怎么做。我只为数值实现了这一点:
aaa = new TreeMap<String, ArrayList<ETrack>>(
new Comparator<String>()
{
@Override
public int compare(String s1, String s2)
{
return Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
}
});
但这显然不是完整的解决方案。有什么想法吗?
【问题讨论】:
-
拆分数字和字母部分。按数字部分排序,然后按字母部分排序。
-
创建一个类(例如:Version 实现 Comparable
),其中包含一个 int(例如:12)和一个 char 或 String(例如:'a')。在这个类中实现 equals、hashCode 和 compareTo。添加静态方法 parse(String) 将字符串解析为版本。然后使用 TreeMap . -
你不是第一个有这个问题的人。您是否找到了解决方案?
标签: java string comparator