ホームページ  >  記事  >  Java  >  2 つのオブジェクトを比較する Java プログラム

2 つのオブジェクトを比較する Java プログラム

王林
王林転載
2023-08-31 15:45:121105ブラウズ

###############導入###

Java では、equals() メソッドを使用してオブジェクトを比較できます。このメソッドは、オブジェクトのプロパティに基づいて 2 つのオブジェクトが等しいかどうかを判断します。 Java でオブジェクトを比較する場合、クラス内の equals() メソッドをオーバーライドして、必要なプロパティに基づいて比較が行われるようにすることが非常に重要です。 2 つのオブジェクトを比較する Java プログラム

この Java プログラムは、equals() メソッドをオーバーライドすることによって Person 型の 2 つのオブジェクトを比較し、名前と年齢属性に基づいてそれらを比較します。まず、equals() メソッドを使用してオブジェクトが同じクラスに属しているかどうかを確認し、次に name 属性と age 属性を比較します。両方のプロパティが一致する場合、メソッドは true を返し、オブジェクトが等しいことを示します。いずれかのプロパティが異なる場合、メソッドは false を返し、オブジェクトが等しくないことを示します。

###方法###

標準的な方法は 2 つあります

equals() メソッドを使用する

######カバーされていません######

オーバーライドを使用する
  • hashCode() メソッドとquals() メソッドを使用する
    • 例 1:equals() メソッドのオーバーライド
    • クラスでequals()メソッドをオーバーライドすると、オブジェクトのプロパティに基づいたカスタム比較が可能になります。

      ###方法###

    最初に、name と age という 2 つのプライベート インスタンス変数を含む Person クラスを定義します。
  • 名前と年齢を受け入れ、これらの値でインスタンス変数を初期化する Person クラスのコンストラクターを定義します。

名前と年齢に基づいて 2 つの Person オブジェクトを比較するために、Person クラスの equals() メソッドをオーバーライドしました。 equals() メソッドは Object パラメータを受け入れます。最初に、パラメータが空でなく、Person クラスのインスタンスであるかどうかを確認します。次に、そのオブジェクトを Person オブジェクトに変換し、その名前と年齢のプロパティを現在のオブジェクトの名前と年齢のプロパティと比較します。

    main() メソッドでは、名前と年齢の値が異なる 2 つの Person オブジェクトを作成します。
  • 最初の Person オブジェクトで equals() メソッドを呼び出し、2 番目の Person オブジェクトをパラメータとして渡します。 equals() メソッドは、2 つのオブジェクトが等しいかどうかを示すブール値を返します。
  • 最後に、System.out.println() を使用して比較結果をコンソールに出力します
  • リーリー
  • 説明
  • の中国語訳は次のとおりです:

    説明

  • この例では、名前と年齢が異なる 2 つの Person オブジェクトを作成し、最初のオブジェクトの equals メソッドを呼び出して、2 番目のオブジェクトと比較します。 equals メソッドは Person クラスで定義されており、両方のオブジェクトが同じ名前と年齢プロパティを持つかどうかを確認します。最後に、比較の結果をコンソールに出力します。
  • ###出力### リーリー

    例 2:equals() メソッドをオーバーライドしない

  • quals() メソッドはオーバーライドされず、オブジェクトはプロパティではなく参照に基づいて比較されます。
  • ###方法###

  • 最初に、name と age という 2 つのプライベート インスタンス変数を含む Person クラスを定義します。

名前と年齢を受け入れ、これらの値でインスタンス変数を初期化する Person クラスのコンストラクターを定義します。

main() メソッドでは、同じ名前と年齢の値を持つ 2 つの Person オブジェクトを作成します。

最初の Person オブジェクトで equals() メソッドを呼び出し、2 番目の Person オブジェクトをパラメータとして渡します。 Person クラスの equals() メソッドをオーバーライドしていないため、Object クラスから継承された equals() メソッドのデフォルトの実装が使用されます。実装は、2 つのオブジェクトが同じオブジェクトである (つまり、同じメモリ アドレスを持つ) かどうかをチェックし、同じである場合は true を返します。 person1 オブジェクトと person2 オブジェクトのメモリ アドレスは異なるため、equals() メソッドは false を返します。

    最後に、System.out.println() を使用して比較結果をコンソールに出力します。
  • リーリー
  • 説明
  • の中国語訳は次のとおりです:

    説明

  • この例では、名前と年齢が同じ 2 つの Person オブジェクトを作成し、equals メソッドを呼び出して最初のオブジェクトと 2 番目のオブジェクトを比較します。 Person クラスの equals メソッドをオーバーライドしていないため、Object クラスから継承されたデフォルトの実装が使用されます。この実装は、2 つのオブジェクトが同じオブジェクトである (つまり、同じメモリ アドレスを持つ) かどうかをチェックし、そうである場合は true を返します。 person1 オブジェクトと person2 オブジェクトのメモリ アドレスが異なるため、equals メソッドは false を返します。最後に、比較の結果をコンソールに出力します。
  • ###出力### リーリー

    例 3: hashCode() メソッドとquals() メソッドの使用

  • quals() メソッドはオーバーライドされず、オブジェクトはプロパティではなく参照に基づいて比較されます。
  • ###方法###

  • パーソン クラスの 2 つのオブジェクト、person1 と person2 を作成しました。名前と年齢は同じです。
  • 次に、person1 で hashCode() メソッドとquals() メソッドを呼び出します。

Person クラスでは、hashCode() メソッドをオーバーライドし、Objects.hash() メソッドを使用して、オブジェクトの名前と年齢属性に基づいてハッシュ コードを生成します。

  • 然后我们重写equals()方法,根据它们的姓名和年龄属性来比较两个Person对象。该方法首先检查对象是否属于同一类,如果是,则使用Objects.equals()方法检查它们的姓名和年龄属性是否相等。

  • 在main()方法中,我们使用&&运算符通过hashCode()方法检查person1和person2的哈希码是否相同,并且通过equals()方法返回true。

  • 最后,我们打印出一个消息,指示这些对象是否相等。

  • public class ObjectComparator {
        
       public static void main(String[] args) {
            
          // Create two objects to compare
          Person person1 = new Person("Alice", 25);
          Person person2 = new Person("Alice", 25);
            
          // Compare the two objects using hashCode and equals methods
          boolean areEqual = person1.hashCode() == person2.hashCode() && person1.equals(person2);
          System.out.println("Are the two objects equal? " + areEqual);
       }
    }
    
    class Person {
        
       private String name;
       private int age;
        
       public Person(String name, int age) {
          this.name = name;
          this.age = age;
       }
        
       @Override
       public int hashCode() {
          return Objects.hash(name, age);
       }
        
       @Override
       public boolean equals(Object obj) {
          if (this == obj)
             return true;
          if (!(obj instanceof Person))
             return false;
          Person other = (Person) obj;
          return Objects.equals(name, other.name) && age == other.age;
       }
    }
    

    Explanation

    的中文翻译为:

    解释

    在这个例子中,我们创建了两个具有相同姓名和年龄的Person对象,然后调用第一个对象的hashCode()和equals()方法来与第二个对象进行比较。

    在Person类中,我们重写了hashCode()和equals()方法,以便根据它们的name和age属性来比较对象。hashCode()方法返回name和age属性的组合的哈希码,equals()方法检查对象是否属于同一类,并且具有相同的name和age属性。

    最后,我们使用&&运算符来检查两个对象的哈希码是否相同,并且equals()方法是否返回true。如果两个条件都为true,我们打印出对象相等的信息。否则,我们打印出对象不相等的信息。

    输出

    The two person objects are equal
    

    结论

    • 这个Java程序使用equals()方法来比较两个Person对象的属性,该方法已在Person类中被重写。

    • 该程序展示了定制对象比较的重要性,并突出了Java在实现自定义比较逻辑方面提供的灵活性。

    以上が2 つのオブジェクトを比較する Java プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。