あなたは Java プログラマーで、タスクは並べ替えであると想像してください。 Java には、窮地を救ってくれる 2 つのスーパーヒーローが用意されているので、幸運です。Comparable と Comparator。しかし、ちょっと待ってください、この 2 人のヒーローはあまり仲良くありません。むしろ敵同士のようなものです。それで、仕分け悪役が攻撃してきたとき、どれを呼ぶべきですか?分解してみましょう。
Comparable インターフェースをご紹介します。 常に自分のやり方で物事を進めることを主張するヒーローのようなものです。 Comparable を実装すると、「自分を分類する方法がわかった」と言っていることになります。はい、Comparable を実装するオブジェクトには独自の組み込みの並べ替えルールがあり、それは個人用の 並べ替え GPS を持つようなものです。取引内容は次のとおりです:
コーディング例が 1 つ必要ですか?
public class Person implements Comparable<Person> { private String name; private int age; *// Implement compareTo* public int compareTo(Person other) { return Integer.compare(this.age, other.age); }
❌ 短所:
次に Comparator を入力します。これは柔軟性を重視した、クールでのんびりとした相棒です。 Comparable が一匹狼なら、Comparator はカメレオンです。それは仕分け用のスイスアーミーナイフのようなものです。デフォルトの順序が気に入らない場合は、問題ありません。Comparator を使用すると、クラス自体を変更せずに好きなように並べ替えることができます!
public class Person { private String name; private int age; *// Comparator for sorting by name* public static Comparator<Person> nameComparator = new Comparator<Person>() { public int compare(Person p1, Person p2) { return p1.name.compareTo(p2.name); } }; *// Comparator for sorting by age* public static Comparator<Person> ageComparator = new Comparator<Person>() { public int compare(Person p1, Person p2) { return Integer.compare(p1.age, p2.age); } }; }
非常に柔軟です。必要なだけさまざまな並べ替え戦略を作成します。年齢、名前、身長など、ボートに浮かぶものごとに並べ替えてください!
元のクラスをいじる必要はありません。ソースには触れずに、まったく異なる方法でオブジェクトを並べ替えたいですか? Comparator があなたをサポートします。
❌ 短所:
この 2 人が直接対決でどのように積み重なるか見てみましょう:
機能 比較可能 ? コンパレータ ?
明確で自然な並べ替え方法を持つオブジェクトを扱っていて、その 1 つの並べ替え方法だけで十分である場合は、Comparable が頼りになります。これは黒の T シャツのような古典的な選択であり、うまくいきます。
ただし、並べ替えのニーズがもう少し複雑な場合 (複数の並べ替えルールを操作している場合)、または元のクラス コードをいじりたくない場合は、Comparator が柔軟でスタイリッシュな相棒になります。ネオンサングラスをかけているようなものです。オプションが増えれば、さらに楽しくなります!
これで完成です! Comparable はデフォルトのオールインワン並べ替えソリューションですが、Comparator は状況が少し不安定になったときに呼び出す、適応性のある多目的ヘルパーです。それぞれに長所と短所があるため、仕分けヒーローを選択する前に、目の前のタスクについて考えてください。
どちらを選択しても、Java でのソートはかつてないほどクールです。 ?
以上がJava 比較ツールと比較可能なガイド (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。