基本類型直接 `< > ==` 比較;引用類型需**定義比較規則**。標準做法:實現 `Comparable
class Student implements Comparable {
String name; int score;
public Student(String n, int s) { name=n; score=s; }
@Override public int compareTo(Student o) {
return Integer.compare(this.score, o.score); // 按分數升序
}
@Override public String toString() { return name+":"+score; }
}
public class BinarySearchDemo {
public static void main(String[] args) {
Student[] arr = {new Student("A",80), new Student("B",90), new Student("C",70)};
Arrays.sort(arr); // 依賴 compareTo
Student key = new Student("", 80);
int idx = Arrays.binarySearch(arr, key);
System.out.println(idx >= 0 ? "找到: " + arr[idx] : "未找到 插入點: " + (-idx-1));
}
}
若不修改類(第三方類),用 `Comparator`:
Arrays.sort(arr, Comparator.comparingInt(s -> s.score));
int idx = Arrays.binarySearch(arr, key, Comparator.comparingInt(s -> s.score));