Comparable と Comparator はどちらも、コレクション要素の並べ替えに使用される高水準プログラミング言語である Java のインターフェイスです。 Java は基本的に、オブジェクトを並べ替えるためにこれら XNUMX つの異なるインターフェイスを提供します。
両方のインターフェイスには多くの顕著な違いがあり、それらが実行する機能に基づいて XNUMX つのインターフェイスの間に境界線が生じます。
主要な取り組み
- Comparable は、オブジェクトの自然順序付けのためのインターフェースです。 Comparator は、オブジェクトを比較するための外部ユーティリティです。
- Comparable を実装するには、比較するオブジェクトのクラスを変更する必要があります。 Comparator は、元のクラスを変更せずに使用できます。
- Comparable は、単一のデフォルトのソート方法を課します。 Comparator では、複数のカスタマイズ可能な並べ替えオプションを使用できます。
比較可能なものと比較可能なもの
Comparable は、compareTo メソッドを定義する Java のインターフェイスで、自然に順序付けされたオブジェクトを比較するために使用されます。 「this」参照を使用してオブジェクトを比較します。 コンパレータ インターフェイスは、オブジェクトの属性を考慮してオブジェクトを並べ替えます。 XNUMX つの異なるクラスのオブジェクトを考慮します。

Comparable は Java 言語の lang パッケージに存在するインターフェイスで、その目的は、年齢、価格、ID、名前などの単一の属性のみを使用してコレクション要素を並べ替えることです。
自分自身を他のオブジェクトと比較することができます。 リストであれ配列であれ、あらゆるタイプのオブジェクトをソートできます。
Comparator は Java 言語の util パッケージに存在するインターフェイスであり、その目的は、複数の属性を一度に使用してコレクション要素を並べ替えることです。
これは別のクラスであり、比較される要素の型の外部にあります。 コレクション クラスは、パラメーターとしてコンパレーターを受け入れる XNUMX 番目の並べ替えメソッドを提供します。
比較表
比較のパラメータ | 匹敵します | コンパレータ |
---|---|---|
ソートタイプ | 単一の並べ替えシーケンスを提供します。 | 複数の並べ替えシーケンスを提供します。 |
クラスの変更 | 実際のクラスを変更します。 | 実際のクラスは変更されません。 |
パッケージの場所 | java—lang パッケージに含まれています。 | Java に存在します。 ユーティリティ パッケージ。 |
メソッド | compareTo() メソッドがあります。 | これには、compare() メソッドがあります。 |
ソート方法 | Collections.sort(List) メソッド。 | Collections.sort(List,Comparator) メソッド。 |
比較可能とは何ですか?
上で説明したように、comparative は lang パッケージに存在する Java プログラミング言語のインターフェイスであり、XNUMX つの属性だけを使用してコレクション要素を並べ替えるのに使用されます。 同等のインターフェイスには、compareTo() というメソッドが XNUMX つだけ含まれています。
比較可能なオブジェクトは、他のオブジェクトと比較することができます。 クラスがインスタンスを比較するには、クラスが Comparable インターフェイスを実装する必要があります。
自然順序付けのオブジェクト用に、同等のインターフェースが開発されました。 言い換えれば、これは、ソートされるオブジェクトが、ソートされる順序である必要があることを意味します。
論理的に言えば、同等のインターフェイスは、「この」参照とメソッド内で言及されているオブジェクトを比較します。 いずれかのクラスが Comparable インターフェイスを実装している場合、そのクラスのオブジェクトはコレクションを使用して並べ替えることができます。 sort() または配列。 sort()メソッド。
オブジェクトは、CompareTo メソッドによって定義された自然な順序で自動的に並べ替えられます。 数値、文字列、およびその他の多くの型を比較できます。 文字列は、アルファベット比較を使用して比較できます。
Java のさまざまな組み込みクラスが、同等のインターフェイスを実装しています。 留意すべき最も重要なことは、比較可能なインターフェイスは同じクラスのオブジェクトを比較するためにのみ使用できるということです。

コンパレーターとは?
Java プログラミング言語のコンパレータ インターフェイスは util パッケージに含まれており、複数の属性に基づいてコレクションを一度に並べ替えるのに使用されます。
Comparator は完全に別のクラスです。 プログラマは、さまざまなオブジェクトを比較する目的で、コンパレータ インターフェイスを実装する複数のクラスを作成するために使用します。
コレクション オブジェクトを比較するには、まず、compare() メソッドを含むコンパレータ メソッドを実装するクラスを作成します。 次の手順では、コンパレータ インターフェイスを実装するそのクラスのインスタンスを作成します。
最後の手順は、オーバーロードされたメソッド (sort() メソッド) を呼び出し、前の手順で作成したクラスのリストとインスタンスの両方を割り当てることです。
コンパレータ インターフェイスは、異なるクラスの XNUMX つのオブジェクトを比較します。 Comparator インターフェイスには、compare() メソッドと equals() メソッドの XNUMX つのメソッドがあります。
compare() メソッドは、比較するパラメーターとして 2 つの異なるオブジェクトを受け取り、equals() メソッドは、渡されるオブジェクトが呼び出し元の比較器と等しいかどうかを判断します。
equals() メソッドは、出力としてブール値を返します。 オブジェクトが通過し、呼び出し元のオブジェクトが両方のコンパレータである場合は True が返され、そうでない場合は false が返されます。
Compare() メソッドは、渡された XNUMX つのオブジェクトのうち大きい方を示す整数値を出力で返します。

ComparableとComparatorの主な違い
- Comparable インターフェイスは、ID、名前、または特定のパラメータなどの単一の要素でコレクションをソートできる単一のソート シーケンスを提供します。一方、comparator インターフェイスは、ID、名前、またはその他のパラメータなどの複数の要素でコレクションをソートできる複数のソート シーケンスを提供します。
- 比較可能なインターフェイスは実際のクラスを変更するため、元のクラスに影響を与えます。一方、比較インターフェイスは、実際のクラスが変更されずに同じままであるため、元のクラスにまったく影響を与えません。
- 同等のインターフェイスは Java の lang パッケージに存在し、comparator インターフェイスは Java の util パッケージに存在します。
- 比較可能なインターフェイスでは、compareTo() メソッドを使用して要素を並べ替えますが、コンパレータ インターフェイスでは、compare() メソッドを使用して要素を並べ替えます。
- コレクションの類似型リスト要素は、コレクションを使用して並べ替えることができます。 一方、コレクションの比較型リスト要素は、コレクションを使用してソートできます。 ソート (リスト、コンパレータ) メソッド。

Comparable インターフェイスと Comparator インターフェイスの間で指摘した主な違いは、2 つのインターフェイスの違いを理解するのに非常に有益であり、役立ちます。 Comparable インターフェイスが、compareTo メソッドで定義された自然な順序でオブジェクトを自動的に並べ替える方法についての説明は、特に有益です。
Comparable インターフェイスと Comparator インターフェイスの背後にあるロジックを詳しく説明していただきありがとうございます。この情報は、並べ替えメカニズムをより効果的に実装するのに確実に役立ちます。
私も同意します。この記事では Comparable インターフェイスと Comparator インターフェイスを明確かつ簡潔に比較し、それぞれの独自の機能と使用例を理解しやすくしています。
Comparable インターフェイスと Comparator インターフェイスとその独特の機能の内訳は、非常に勉強になります。これらのインターフェイスの目的と使用法についての包括的な説明は、開発者が十分な情報に基づいて設計を決定するのに間違いなく役立ちます。
ここで示された詳細な比較に感謝します。これは、Java の並べ替えと比較の手法について理解を深めることを目指す開発者にとって貴重な情報です。