見出し画像

Java:compareToとequalsの違い

※自分用学習メモです

compareTo と equals の違いは、目的使われ方に関係しています。両方ともオブジェクト同士の比較を行いますが、どのように比較するかが異なります。

1. equals

  • 目的: equals メソッドは、2つのオブジェクトが同じかどうかを判定するために使われます。

  • 返り値: boolean 型(true または false)。

  • 使い方: equals は、オブジェクトが等価であるかを確認するために使います。equals メソッドは通常、Object クラスに定義されていて、必要に応じてオーバーライドされます。

例:

String str1 = "Hello";
String str2 = "Hello";

if (str1.equals(str2)) {
    System.out.println("str1とstr2は等しいです");
} else {
    System.out.println("str1とstr2は等しくありません");
}
  • この例では、equals メソッドを使って str1 と str2 の文字列が等しいかどうかを判定しています。equals メソッドは 2つのオブジェクトの内容が同じかどうか を確認します。


2. compareTo

  • 目的: compareTo メソッドは、2つのオブジェクトを順序付けして比較するために使います。通常、ソートや並べ替えの際に使われます。

  • 返り値: int 型(0、負の数、正の数のいずれか)。

    • 0: 両者が等しい場合。

    • 負の数: 比較対象が小さい場合。

    • 正の数: 比較対象が大きい場合。

  • 使い方: compareTo メソッドは、オブジェクトが持つ値や順序を比較します。このメソッドは Comparable インターフェースを実装したクラスで使われます。

例:

String str1 = "Apple";
String str2 = "Banana";

int result = str1.compareTo(str2);
if (result == 0) {
    System.out.println("str1とstr2は等しいです");
} else if (result < 0) {
    System.out.println("str1はstr2より小さいです");
} else {
    System.out.println("str1はstr2より大きいです");
}
  • この例では、compareTo メソッドを使って str1 と str2 の文字列順序を比較しています。compareTo は str1 が str2 より小さい場合、負の値を返します(辞書順で比較される)。


違いのまとめ:


具体的な使用例:

  • equals の例:

    • 2つのオブジェクトが等しいかどうかを確認する場合に使います。

    • 例えば、2つの String オブジェクトの内容が等しいか、または2つのカスタムクラスオブジェクトの特定のフィールドが等しいかどうかを確認する際に使います。

  • compareTo の例:

    • オブジェクト同士を比較して順序付けする場合に使います。Comparable インターフェースを実装することで、カスタムオブジェクトでもこのメソッドを実装できます。たとえば、ソートアルゴリズムで2つのオブジェクトを比較する際に使用します。

compareTo と equals の併用例:

String str1 = "Hello";
String str2 = "World";

if (str1.equals(str2)) {
    System.out.println("等しい");
} else {
    int result = str1.compareTo(str2);
    if (result < 0) {
        System.out.println("str1はstr2より小さい");
    } else if (result > 0) {
        System.out.println("str1はstr2より大きい");
    }
}
  • このように、equals と compareTo を組み合わせて使用することで、まずは等しいかどうかを確認し、等しくなければ順序付けの比較を行うことができます。

いいなと思ったら応援しよう!