【发布时间】:2020-07-16 06:45:17
【问题描述】:
我需要一个 SortedMap,其中的字符键按以下方式排序:('A'..'Z'..'0'..'9'),所以首先是字符,然后是数字,所有这些都按升序排列。 这是我到目前为止所尝试的,但是,输出显示它无法返回我想要的排序,因为数字键的值仍然在字母键的值之前。 我究竟做错了什么?有没有更好的方法来做到这一点? 提前致谢!
public static void main(String[] args) {
SortedMap<Character, String> sortedMap = new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
if (Character.isDigit(o1) && Character.isLetter(o2)){
return o2.compareTo(o1);
}
else if(Character.isLetter(o1) && Character.isDigit(o2)){
return o1.compareTo(o2);
}
else{
return o1.compareTo(o2);
}
}
});
sortedMap.put('5', "five");
sortedMap.put('8', "nine");
sortedMap.put('A', "ALPHA");
sortedMap.put('G', "GOLF");
sortedMap.put('F', "FOXTROT");
System.out.println(sortedMap.values());
}
【问题讨论】:
标签: java comparator digits letter sortedmap