Blog top image

hashCode() and equals()


equals() মেথড

  • দুটা অবজেক্টের ইকুয়ালিটি বা সমতা নির্ধারণ করে 
  • দুটা অবজেক্ট একই রকম হবার জন্য  তাদেরকে reflexivesymmetric, transitive,  এবং consistent হতে হবে 
  • যদি অবজেক্ট পরিবর্তিত না হয় তাহলে equals() সবসময় একই রেজাল্ট দিবে
  • o.equals(null) সব সময় ফলস হবে

hashCode() মেথড 

  • একটা অবজেক্টের হ্যাশ কোড রিটার্ন করে 
  • যদি একটা অবজেক্টের একাধিক কপি থাকে তাহলে সবার জন্য একই কোড রিটার্ন করতে হবে 
  • দুইটা ভিন্ন অবজেক্টের হ্যাশ কোড একই হতে পারে 

hashCode() and equals() এর মধ্যে সম্পর্ক 

  • যদি দুটা অবজেক্টের equals() ট্রু রিটার্ন দেয় তাহলে অবশ্যই তাদের হ্যাশ কোড একই রকম হতে হবে
  • প্রথম শর্তকে ঠিক রাখতে যখনি  equals() ওভাররাইড/পরিবর্তন করা হবে সাথে সাথে hashCode() মেথড ও ওভাররাইড করতে হবে 

নোট

  • reflexive: for any non-null reference value x, x.equals(x) should return true.
  • symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.