首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 排序與搜尋完全指南:Arrays、Collections 與比較器

     編輯:Java 相關知識

陣列排序與搜尋

java.util.Arrays 提供所有基本型別、String 和 Object 陣列的 sort() 和 binarySearch()。基本用法:

byte[] b = new byte[15];
Arrays.sort(b);
int loc = Arrays.binarySearch(b, b[10]);

關鍵警告:未排序陣列調用 binarySearch() 行為不可預測,可能導致無限迴圈。

字串排序的字典序陷阱

預設按字符編碼排序:大寫字母 (A-Z) 排在小寫 (a-z) 前面。電話簿式排序往往不符合預期。

比較器 與 可比較介面

為自定義排序,Java 提供兩種機制:

  • Comparator (比較器):外部比較策略,實作 compare(o1, o2)。排序時傳入實例,搜尋時必須用同一比較器。
  • Comparable (可比較):內建自然順序,實作 compareTo(Object)。類別自身定義順序,無需外部比較器。

範例:不分大小寫字母排序

Arrays.sort(stringArray, new Comparator() {
    public int compare(Object o1, Object o2) {
        return ((String)o1).toLowerCase().compareTo(((String)o2).toLowerCase());
    }
});

列表排序與搜尋

Collections 提供對應 List 的靜態方法:sort(List)、binarySearch(List, Object) 等,用法與 Arrays 一致。TreeMap 也需 Comparable/Comparator 維持鍵有序。

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