我想使用此方法对字符串数组进行排序:
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"]`
我做错了什么?
答案 0 :(得分:6)
Java中字符串的自然顺序是词典编纂,区分大小写。大写字母将出现在小写字母之前。
因此,您需要按不区分大小写的顺序进行排序:
Collections.sort(sortedList, String.CASE_INSENSITIVE_ORDER);
答案 1 :(得分:2)
您应该使用Collator,它使用区域设置敏感规则对字符串进行排序。字符串的默认顺序是纯字典顺序(即字符按其数字Unicode值排序)。