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

Java Comparator 接口官方文檔詳解 (Java 2 Platform SE 5.0)

     編輯:Java 相關知識

接口定義

public interface Comparator<T> {
  int compare(T o1, T o2);
  boolean equals(Object obj);
}

核心契約

  • 整體排序:compare 強制實現總序關係
  • 與 equals 一致性:若 compare(e1,e2)==0 與 e1.equals(e2) 布爾值相等,稱「與等號一致」
  • 有序集合警示:使用不一致比較器的 TreeSet/TreeMap 會違背 Set/Map 約定(如兩個 equals 為 true 的對象被視為不同)
  • 可序列化建議:實現 Serializable 以支援有序集合序列化

數學定義

  • 排序關係:{(x,y) | c.compare(x,y) <= 0}
  • 商(等價類):{(x,y) | c.compare(x,y) == 0}
  • 與 equals 一致意謂:商等於 {(x,y) | x.equals(y)}

方法詳解

compare(T o1, T o2)

  • 返回負/零/正:o1 小於/等於/大於 o2
  • 反對稱性:sgn(compare(x,y)) == -sgn(compare(y,x))
  • 傳遞性:compare(x,y)>0 && compare(y,z)>0 => compare(x,z)>0
  • 一致性:compare(x,y)==0 => sgn(compare(x,z)) == sgn(compare(y,z))

equals(Object obj)

  • 僅當 obj 也是 Comparator 且強制相同排序時返回 true
  • 不重寫也安全,重寫可提升性能比較

相關類別

Comparable, Arrays.sort, TreeMap, TreeSet, SortedMap, SortedSet, Serializable

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