在Java中,每当我们覆盖equals方法时,我们是否还需要覆盖hashcode?

时间:2016-07-30 10:36:37

标签: java hashcode

我有以下Java代码,我已经覆盖了相同的,但不是hashCode。

我的要求是检查HashCodeSampleMain类的两个对象是否具有相同的值。

我可以在不重写hashCode的情况下完成它。

public class HashCodeSampleMain {

    public static void main(String[] args) {

        HashCodeSample obj1 = new HashCodeSample(100, "surender");
        HashCodeSample obj2 = new HashCodeSample(100, "surender");

        if (obj1.equals(obj2))
        {
            System.out.println("both objects are same");
        }

    }

 }
 public class HashCodeSample {

     int id =0;
     String name=null;

     public HashCodeSample(int temp_id, String temp_name)
     {
         id =temp_id;
         name =temp_name;
     }

     @Override
     public boolean equals(Object obj) {

         HashCodeSample m =(HashCodeSample)obj;

         if(this.id ==m.id && this.name ==m.name)
         {
             return true;
         }

         else 
         {
             return false;
         }

    }

}

输出

 both objects are same

我想了解hashCode与等值方法相关的重要性。

0 个答案:

没有答案