比較可能vsコンパレータ:比較可能とコンパレータの違い

公開: 2020-12-30

目次

比較可能およびコンパレータ:概要

コンパレータとコンパレータはどちらも、クラスが実装される動作を決定するためのJavaプログラミング言語のインターフェイスです。 Comparableは自然に順序付けられたオブジェクトで使用されますが、Comparatorインターフェースは、オブジェクトの属性を考慮してソートを実装します。 さらに、Comparatorの並べ替えでは、2つの異なるクラスのオブジェクトが考慮され、Comparableは「this」参照を使用してオブジェクトを比較します。

これで、両方のインターフェースが機能する基本原理が確立されたので、2つのインターフェースの違いを見てみましょう。

ComparableとComparatorの違い

並べ替えの方法

同程度の

ソートにはcompareTo()関数を使用します。 これは、Comparableソートインターフェイスに存在する唯一のメソッドです。

compareTo(Object O)は、引数としてオブジェクトを受け取り、それを同じタイプの別のオブジェクトと比較します。 オブジェクトが文字列の場合、同じタイプの別のオブジェクトとのみ比較できます。 intオブジェクトなどの場合も同様です。 compareTo()は、ソートの結果に基づいて、負、正、またはゼロの整数値を返します。

コンパレータ

Comparatorで要素をソートするには、compare()とequals()の2つのメソッドがあります。

compare(Object O1、Object O2)は、入力として2つの引数を考慮し、目的の出力を提供します。 最初の引数が2番目の引数とどのように一致するかを示す整数を返します。

  • O1がO2より小さい場合、負の整数を返します。
  • O1がO2より大きい場合、正の整数を返します。
  • O1がO2と等しい場合、0を返します。

equals(Object)は、オブジェクトを入力として考慮し、それをコンパレータと比較します。 オブジェクトがコンパレータと等しい場合はTrueを返します。 また、順序が変更されないようにします。

使用したパッケージ

同程度の

これは、Javaのjava.langパッケージに含まれています。

コンパレータ

これは、Javaのjava.utilパッケージに含まれています。

注文とクラス

同程度の

  • 自然な順序に従う、つまり自分自身をソートする傾向があるオブジェクトを考慮に入れます。 たとえば、名前、価格、給与、ロール番号、年齢などの場合はアルファベット順または番号順。
  • 両方のオブジェクトが同じクラスに属していることも重要です。
  • 比較可能なインターフェースは、「this」参照を指定されたオブジェクトと比較します。
  • Comparableを使用した並べ替えは、実際のクラスに影響します。

コンパレータ

  • このインターフェースは、主に指定されたオブジェクトの属性をソートするために使用されます。 彼らは自然な秩序を持っている必要はありません。 カスタマイズできます。
  • ソートのロジックは、考慮に入れて2つのクラスのオブジェクトの属性を比較するために、別々のクラスにある必要があります。
  • 実際のクラスは影響を受けません。

シーケンスとコレクション

同程度の

  • 単一のソートシーケンスのみをサポートします。 これは、ロール番号、年齢、ランクなど、コレクションの1つの要素または属性しか考慮できないことを意味します。
  • オブジェクト、配列、またはリストのコレクションを並べ替えるには、コレクションを使用できます。 sort(List)または配列。 sort(List)。 これにより、オブジェクトが自然な順序になります。

コンパレータ

  • 複数のソートシーケンスをサポートします。 これは、ロール番号、年齢、ランクなど、コレクションの複数の要素または属性を考慮することができることを意味します。
  • collection.sort(list、comparator)を使用して、コレクションを並べ替えることができます。

これは、ComparableとComparatorのすべての違いの要約です。

同程度のコンパレータ
パッケージ
Java.lang Java.util
並べ替えの方法
compareTo() 比較()
注文
自然順カスタムオーダー
オブジェクトのタイプ
比較するオブジェクトは同じタイプである必要があります異なるクラスのオブジェクトが考慮されます
クラスへの影響
クラスが変更されますクラスには影響しません
ソートシーケンス
単一のソートシーケンス複数のソートシーケンス

世界のトップ大学からのソフトウェア開発コースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

JavaでComparableとComparatorを使用する際に留意すべき点

  • 比較可能なインターフェースは、特定のクラスの標準的な比較を実行するために販売している場合に選択するものです。
  • コンパレータはラムダの使用を許可します。
  • compareTo()メソッドを使用して、ComparatorとComparableの両方を実装できます。
  • ソートの柔軟性を求める場合は、コンパレータインターフェイスをお勧めします

結論

ほとんどの実際のシナリオでは、並べ替えるときに、通常、さまざまなパラメーターを念頭に置いています。 また、同等の結果をデフォルトの並べ替えで使用し、動的に変更できないため、要件に合わせてさまざまな並べ替え方法をカスタマイズおよび選択できるコンパレータよりも実用的ではありません。 この理由だけで、ComparatorはComparableよりも実用的なアプリケーションを見つけます。

読む:チェックアウトするいくつかの興味深いJavaプロジェクト

Java、フルスタック開発について詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクトを提供します。と割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

プログラミング言語のインターフェースとは何ですか?

Javaの学習は簡単ですか?

Javaはオブジェクト指向プログラミングパラダイムを導入しており、経験の浅いJava開発者でも、経験豊富な開発者のようにプログラムを考えて作成することができます。 Javaは、今日でも広く使用されているCおよびC++プログラミング言語に端を発しています。 Javaは、機能の点でCおよびC ++といくつかの類似点がありますが、はるかにユーザーフレンドリーな言語に成長しました。 オブジェクト指向プログラミングを使用すると、既存のコードの保守と変更が簡単になるため、初心者のコーダーでも企業プロジェクトに取り掛かることができます。 Javaは実行前にエラーが検証されるため、新しい開発者が予期しないランタイム障害に遭遇する可能性は低くなります。 Javaは、プログラマーにすべてのコード要素を正しく指定するように強制し、アプリケーションの成長に伴う間違いの可能性を減らします。

Javaでソートが必要なのはなぜですか?

並べ替えとは、配列内の要素の場所をすべて昇順または降順になるように再配置するための一連の手法を指します。 適切な並べ替えアルゴリズムでは、同じ値の要素が同じ順序で並べ替えられた配列に残るようにする必要もあります。 データ構造とアルゴリズムを深く理解するには、並べ替えが必要です。 プログラミング言語としてのJavaは非常に用途が広く、多くのソートアルゴリズムを実装するために使用できます。 これらのアルゴリズムの大部分は非常に用途が広く、再帰的および反復的な方法の両方で実装できます。