2013-02-06 89 views
2

like compareTo,那必須是「自反性,反對稱性和傳遞性」,是否有任何規則來實現比較方法? 感謝實施比較方法的規則

+0

你是認真的嗎? compare()方法的唯一規則是在兩個對象相等時返回true,否則返回false。如果沒有具體的比較方法和需要比較的具體對象,那麼如果這兩個對象應該被認爲是「平等的」,那麼你最好判斷該方法需要評估什麼。 – Shark

+2

@gepeppe我認爲你需要詳述 – KidTempo

+1

我認爲OP只是想知道compareTo是否有一個通用的compare()約定。我想,一個新手的合法性問題。 – Fildor

回答

10

Comparator API

  1. 實現程序必須確保SGN(比較(X,Y))== -sgn(對比(Y,X))對於所有的x和y。 (這意味着當且僅當compare(y,x)引發異常時,比較(x,y)必須拋出異常。)
  2. 實現者還必須確保該關係是可傳遞的:((compare(x, y)> 0)& &(比較(y,z)> 0))意味着比較(x,z)> 0。
  3. 最後,實現者必須確保compare(x,y)== 0意味着所有z的sgn(compare(x,z))== sgn(compare(y,z))。
  4. 一般情況下,但並不嚴格要求(比較(x,y)== 0)==(x.equals(y))。一般來說,任何違反此條件的比較器都應該清楚地指出這個事實。建議的語言是「注意:這個比較器強加 與等號不一致的排序」。
+0

非常複製/粘貼他的「反身,反對稱和傳遞」評論。 – Shark

+0

@Shark是文檔中的內容。 yepp,它來自API的複製/粘貼。 :) – PermGenError

+0

仍然是upvote,因爲它很清楚應該做什麼... :) – Shark