java中的字典序排序

最近在和某软件公司的接口对接过程中,遇到一个字典排序的问题,本身并不难,但是由于平时java用的比较少,一下子陷入了思维误区,随后理了理思路,在此记录下来。

需求:时间戳+秘钥 的字典序排序。

软件公司给出的代码:

String timeStamp = "5991";    // 时间戳
String dataKey = "4sdfdffea4cda815286sdf08d4";    //秘钥         
//这里的排序其实并非整体字符串的字典序排序,而是字符串数组里的两个字符串进行排序。在这里可以把timaStamp的首位数字改成大于4、小于4分别进行测试
String[] strs = new String[]{timeStamp,dataKey};
Arrays.sort(strs);
for (String str:strs){
     System.out.println(str);
    }

在上述代码里,字符串的拼接通过new String[]{}的方式来处理,其实在这个地方已经变成了字符串数组,在后续排序的过程中其实并不是每个char的排序,而是timeStamp和dataKey两个字符串比较大小后的排序。当timStamp首位字母大于dataKey的首位字母4时,排序后就

会变成 dataKey + timeStamp的形式,也就是timeStamp到了后面。初期在没有仔细读懂代码(主要还是java语法上不太熟悉)的情况下,百思不得其解,后面才领悟到这就是个list么。。。

有个这个思路,那么正常的可用的字典序排序应该是:

        String targetStr = timeStamp + dataKey;    
        char[] charArr = targetStr.toCharArray();
            String mark = "";           
            Arrays.sort(charArr);            
            for(char str : charArr) {                
                mark+=str;
            }

首先将string 转换为char数组,然后进行排序即可。

猜你喜欢

转载自www.cnblogs.com/delpy/p/9257050.html