「再帰的、非対称的、推移的」でなければならないcompareToのように、compareメソッドを実装するためのルールはありますか?? ありがとう
2652 次
1 に答える
13
- 実装者は、すべてのxとyに対してsgn(compare(x、y))== -sgn(compare(y、x))であることを確認する必要があります。(これは、compare(y、x)が例外をスローする場合にのみ、compare(x、y)が例外をスローする必要があることを意味します。)
- 実装者は、関係が推移的であることも確認する必要があります:((compare(x、y)> 0)&&(compare(y、z)> 0))はcompare(x、z)>0を意味します。
- 最後に、実装者は、compare(x、y)== 0がすべてのzに対してsgn(compare(x、z))== sgn(compare(y、z))を意味することを確認する必要があります。
- 一般的にはそうですが、厳密には(compare(x、y)== 0)==(x.equals(y))である必要はありません。一般的に、この条件に違反するコンパレータは、この事実を明確に示す必要があります。推奨される言語は「注:このコンパレータは、equalsと矛盾する順序を課します」です。
于 2013-02-06T15:26:53.630 に答える