PersonクラスとEmployeeクラスの2つのオブジェクトがあります。どちらのクラスにも共通の属性ageがあります。そして、これらのクラスの両方のオブジェクトをArraylistにいくつか追加しました。次に、2つで1つのComparatorを作成し、それをCollectionsクラスのsortメソッドに渡します。そして、リストを年齢に基づいてソートする必要があります。JavaでのComparableとComparatorの使用をより明確にするために、これを試しています。
編集:私がこの質問をした理由は、私がコンパレーターと比較可能性について明確ではなかったということでした。クラスがComparableを実装している場合、他のクラスのオブジェクトと比較できないことをどこかで読みました(クラスキャスト例外のため)。
ここで、EmployeeとPersonでリレーションシップを作成する場合、Comparatorを実装する必要はありません(これらのクラスの名前またはその他の共通属性に基づいて並べ替えを実行する場合を除く)。
繰り返しになりますが、ComparatorとComparableをより明確にするために、この質問をしました。
これまで私が理解できたのは、複数のパラメーターでソートを実行したい場合は、Comparatorを実装してCollections.srot()に渡す必要があるということです。
または、並べ替えるオブジェクトのクラスを制御できない場合は、カスタム並べ替えでComparatorを実装する必要があります。(私が間違っているか、何かが足りない場合は、私を訂正してください)
編集
これで、ComparableとComparatorの使用法を理解できたと思います。正しい概念を確実に理解するために、私が理解していることは次のとおりです。異なるクラスの2つのオブジェクトを比較する(そして関係がない)場合は、生のコンパレータを使用して、compareメソッドをオーバーライドする必要があります。誰かがComparableではなくComparatorを実装するもう一つの理由は、ソートに柔軟性を持たせるためです。そして、自然ソートから私が理解しているのは、CompareToメソッドのClassによって実装されたロジックです。
私がこれらすべての点で正しいことを願っています。