Arrays.sort() 按 ASCII 碼排序:大寫字母 (65-90) 排在小寫 (97-122) 之前,導致 "B" 排在 "a" 前面。
String[] arr = { "a", "b", "c", "A", "B", "C" };
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2); // 或 s1.toLowerCase().compareTo(s2.toLowerCase())
}
});
// 結果:[A, a, B, b, C, c] (大小寫混排,相同字母大寫通常在前)
// 若需嚴格 a 先於 A,可再比較原始大小寫:
// return s1.compareToIgnoreCase(s2) != 0 ? s1.compareToIgnoreCase(s2) : s1.compareTo(s2);
Arrays.sort(arr, String.CASE_INSENSITIVE_ORDER); // 忽略大小寫
// 或
Arrays.sort(arr, Comparator.comparing(String::toLowerCase));
不區分大小寫排序屬於「不穩定排序」,相同字母的大小寫順序由實現決定;若業務要求嚴格順序,請在比較器中二次判斷。