hashCode() and equals()
equals() মেথড
- দুটা অবজেক্টের ইকুয়ালিটি বা সমতা নির্ধারণ করে
- দুটা অবজেক্ট একই রকম হবার জন্য তাদেরকে reflexive, symmetric, 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.