按字母排序问题

字母排序问题

问题产生

网络请求参数需要按照a-z排序,客户端用Arrays.sort实现,而服务器用TreeMap实现,最后结果不一致。

排序函数源码

/**
 * list按a-z排序
 *
 * @param 请求参数的list
 * @return 排序后的结果
 */
public static String getSortStr(List<String> list) {
    String result = "";
    String[] arrayList = list.toArray(new String[list.size()]);
    Arrays.sort(arrayList, String.CASE_INSENSITIVE_ORDER);
    for (int i = 0; i < arrayList.length; i++) {
        if (i > 0)
            result += "&";
        result += arrayList[i];
    }
    return result;
}

/**
 * 使用TreeMap来排序
 *
 * @param 请求参数的list
 * @return 排序后的结果
 */
public static String getSortStr2(List<String> list) {
    String result = "";
    TreeMap<String, String> tree = new TreeMap<String, String>();
    for (int i = 0; i < list.size(); i++) {
        tree.put(list.get(i), "" + i);
    }
    for (Map.Entry<String, String> entry : tree.entrySet()) {
        if (!"".equals(result))
            result += "&";
        result += entry.getKey();
    }
    return result;
}

排序结果对比结论

  • Arrays.sort(arrayList, String.CASE_INSENSITIVE_ORDER); 大小写不敏感, 严格按照a-z排序;
  • Arrays.sort(arrayList)和Tree Map排序结果相同,按字母的ASCII编码大小排序,优先级A>Z>a>z。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值