Collections.sort()没有按它应该排序

时间:2014-08-23 15:01:57

标签: java sorting

我想使用此方法对字符串数组进行排序:

private String[] sortAscending(String[] arrayToSort) {
    List<String> sortedList = Arrays.asList(arrayToSort);
    Collections.sort(sortedList);

    return (String[]) sortedList.toArray();
}

这将对此数组进行排序

["Jens", "abCd", "test", "abC", "Peter"] 

到此:

["Jens", "Peter", "abC", "abCd", "test"]

但它应该是

["abC", "abCd", "Jens", "Peter", "test"]`

我做错了什么?

2 个答案:

答案 0 :(得分:6)

Java中字符串的自然顺序是词典编纂,区分大小写。大写字母将出现在小写字母之前。

因此,您需要按不区分大小写的顺序进行排序:

Collections.sort(sortedList, String.CASE_INSENSITIVE_ORDER);

答案 1 :(得分:2)

您应该使用Collator,它使用区域设置敏感规则对字符串进行排序。字符串的默认顺序是纯字典顺序(即字符按其数字Unicode值排序)。