java实现字母 数字 混合排序 实现结果: java1 java2 java3 00java 12345

2024-11-29 10:38:53
推荐回答(1个)
回答1:

String类实现了Comparable接口,其compareTo方法中定义的是按该字符串的“字典顺序”比较大小,在这个字典中,采用通用的顺序,直接比各个单个的字符的大小,即数字比字母小。
而Collections.sort()方法正是基于Comparable接口的compareTo方法比较大小的。
所以你会得到这个结果。
如果要重定义顺序,在一般情况下,要重写compareTo方法,但是String类是final的,不能被继承修改,所以,你只好重新定义一个表示字符串的类了,很是麻烦。
这么做意味着你要自己实现各种需要用到的字符串方法。。。

重写compareTo之后,就可以使用各种排序器了。
这个方法该怎么写,自己抄String的compareTo的源代码吧,然后改一改。
主要就是加几条判断语句,让数字比字母大。

还有一种方案,自己重写一个排序器,在排序器中再定义两个String比较大小的方法。
排序的时候,使用自己的比较大小方法来比。比较方法还是如上所述,抄String的源码,然后修改字母比较大小的定义的路子。。

两种方案,自己根据需要选吧。
如果对String的其他操作不多,建议采用第一种。这样子自己不用写排序器。

看起来很简单的一个问题,实现起来比较麻烦的。