このクラスは、compareTo(...)
メソッドを定義していますが、equals
メソッドは java.lang.Object
から継承しています。
通常、equals
メソッドが true を返す場合に限り、compareTo
メソッドは0を返すべきです。
これが違反されるなら奇妙で予測できない失敗が PriorityQueue などのクラスで発生します。
J2SE 5.0では、PriorityQueue.remove()
は compareTo
メソッドを使用しますが、Java SE 6では、equals
メソッドを使用します。
Comparable インタフェースの compareTo メソッドの JavaDoc を以下に引用します。
必須というわけではありませんが、
(x.compareTo(y)==0) == (x.equals(y))
であることが強く推奨されます。 通常、Comparable
インタフェースを実装しているクラスで、この条件に違反するクラスは明確にこの事実を示す必要があります。 「注:このクラスはequals
と一貫性のない自然順序付けを持ちます」などと明示することをお勧めします。