可能な重複:
compare()とcompareTo()の違い
Java:ComparableとComparatorの実装の違いは何ですか?
ComparableとComparatorの主な違いは何ですか。
そして、どのシナリオで他よりもどちらが優先されますか。
ありがとう
更新しました - 例との良好なリンク!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
クラスが実装するとき同程度の、compareTo
クラスのメソッドは、そのオブジェクトの「自然な」順序付けを定義しています。そのメソッドは、そのオブジェクト上の他のメソッドと一致することが(要求されてはいませんが)契約上義務付けられています。.equals()
比較はtrueを返します。
Aコンパレータ2つのオブジェクトを比較する方法の独自の定義であり、自然な順序付けと一致しない可能性がある方法でオブジェクトを比較するために使用できます。
たとえば、文字列は通常アルファベット順に比較されます。したがって"a".compareTo("b")
アルファベット順の比較を使用します。文字列の長さを比較したい場合は、カスタムコンパレータを作成する必要があります。
要するに、大した違いはありません。それらは両方とも同様の手段の目的です。一般的に、自然順に匹敵するものを実装し(自然順の定義は明らかに解釈に開放されています)、他のソートまたは比較の必要性のために比較器を書きます。
Comparator
制御できない型に対してカスタム比較ロジックを提供する方法を提供します。
Comparable
実装しているオブジェクトを比較する方法を指定できます。
明らかに、あなたがクラスを制御できない場合(または、制御しているオブジェクトを比較するために複数の方法を提供したい場合)、以下を使用してください。Comparator
。
そうでなければあなたが使用することができますComparable
。