Home / Java Programming / Objects and Collections :: Discussion

Discussion :: Objects and Collections

  1.  

     x = 0;
     if (x1.hashCode() != x2.hashCode() )  x = x + 1;
     if (x3.equals(x4) )  x = x + 10;
     if (!x5.equals(x6) ) x = x + 100; 
     if (x7.hashCode() == x8.hashCode() ) = x + 1000;    
     System.out.println("x = " + x); 

    and assuming that the equals() and hashCode() methods are properly implemented, if the output is "x = 1111", which of the following statements will always be true?

     

     

  2. A.

    x2.equals(x1)

    B.

    x3.hashCode() == x4.hashCode()

    C.

    x5.hashCode() != x6.hashCode()

    D.

    x8.equals(x7)

    View Answer

    Workspace

    Answer : Option B

    Explanation :

    By contract, if two objects are equivalent according to the equals() method, then the hashCode() method must evaluate them to be ==.

    Option A is incorrect because if the hashCode() values are not equal, the two objects must not be equal.

    Option C is incorrect because if equals() is not true there is no guarantee of any result from hashCode().

    Option D is incorrect because hashCode() will often return == even if the two objects do not evaluate to equals() being true.

     


Be The First To Comment