首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 字串陣列排序:實現不區分大小寫的字母順序

     編輯:程式設計疑難解答

預設行為

Arrays.sort() 按 ASCII 碼排序:大寫字母 (65-90) 排在小寫 (97-122) 之前,導致 "B" 排在 "a" 前面。

解決方案:自定義 Comparator

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);

Java 8+ 簡寫

Arrays.sort(arr, String.CASE_INSENSITIVE_ORDER); // 忽略大小寫
// 或
Arrays.sort(arr, Comparator.comparing(String::toLowerCase));

注意

不區分大小寫排序屬於「不穩定排序」,相同字母的大小寫順序由實現決定;若業務要求嚴格順序,請在比較器中二次判斷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved