تفاوت کلید - برابر است با کد هش در جاوا
برابر مشابه عملگر==است، که برای آزمایش هویت شی به جای برابری شی است. hashCode روشی است که توسط آن یک کلاس به طور ضمنی یا صریح داده های ذخیره شده در یک نمونه از کلاس را به یک مقدار هش منفرد، که یک عدد صحیح امضا شده 32 بیتی است، تجزیه می کند. تفاوت اصلی بین برابر و هش کد در جاوا این است که از برابر برای مقایسه دو شی استفاده می شود در حالی که از هش کد در هش استفاده می شود تا تصمیم بگیرد که یک شی باید در کدام گروه طبقه بندی شود.
در جاوا برابر است؟
روش برابر برای مقایسه دو شی استفاده می شود.متد برابری پیش فرض در کلاس شی تعریف شده است. این پیاده سازی شبیه عملگر==است. دو مرجع شی تنها در صورتی برابر هستند که به یک شی اشاره کنند. امکان نادیده گرفتن روش برابری وجود دارد.
شکل 01: برنامه جاوا با مساوی
عبارت System.out.println(s1.equals(s2)) پاسخ نادرست را می دهد زیرا s1 و s2 به دو شی متفاوت اشاره دارند. شبیه عبارت System.out.println(s1==s2); بود
عبارت System.out.println(s1.equals(s3)) پاسخ را درست می دهد زیرا s1 و s3 به یک شی اشاره می کنند. شبیه به عبارت System.out.println(s1==s3); بود
هیچ روش برابری در کلاس Student وجود ندارد. بنابراین، برابر در کلاس Object فراخوانی می شود. True فقط در صورتی نمایش داده می شود که مرجع شی به همان شی اشاره کند.
شکل 02: برنامه جاوا با Overridden برابر است با
طبق برنامه فوق، متد برابری لغو می شود. یک شی به متد ارسال میشود و تایپ آن به Student فرستاده میشود. سپس مقادیر id بررسی می شوند. اگر مقادیر id مشابه باشند، مقدار true برمی گردد. اگر نه، false برمی گردد. شناسه های s1 و s2 مشابه هستند. بنابراین، درست چاپ خواهد شد. شناسههای s1 و s3 نیز مشابه هستند، بنابراین true چاپ خواهد شد.
هش کد در جاوا چیست؟
هش کد در هش کردن استفاده می شود تا تصمیم بگیرد که یک شی باید در کدام گروه طبقه بندی شود. گروهی از اشیاء می توانند هش کد یکسانی را به اشتراک بگذارند. یک تابع هش صحیح می تواند اشیا را به طور مساوی در گروه های مختلف توزیع کند.
یک کد هش صحیح می تواند ویژگی های زیر را داشته باشد.فرض کنید دو شیء به عنوان obj1 و obj2 وجود دارد. اگر obj1.equals(obj2) درست باشد، آنگاه obj1.hashCode() برابر با ()obj2.hashCode است. اگر obj1.equals(obj2) نادرست باشد، لازم نیست که ()obj1.hashCode برابر با ()obj2.hashCode نباشد. دو شی نابرابر نیز ممکن است دارای کد هش یکسان باشند.
شکل 03: کلاس دانشجویی با مساوی و کد هش
شکل 04: برنامه اصلی
کلاس Student حاوی متدهای برابر و هش کد است. متد برابر در کلاس Student یک شی دریافت می کند. اگر شی null باشد، false برمی گردد.اگر کلاس های اشیا یکسان نباشند، false برمی گردد. مقادیر id در هر دو شی بررسی می شوند. اگر آنها مشابه باشند، به درستی باز می گردد. در غیر این صورت false برمی گردد.
در برنامه اصلی، اشیاء s1 و s2 ایجاد می شوند. هنگام فراخوانی s1.equals(s2) مقدار true را نشان می دهد زیرا متد برابر لغو شده است و مقادیر id دو شی را بررسی می کند. حتی اگر آنها به دو شی اشاره می کنند، پاسخ درست است زیرا مقادیر id s1 و s2 یکسان هستند. از آنجایی که s1.equals(s2) درست است، کد هش s1 و s2 باید برابر باشد. چاپ هش کد s1 و s2 همان مقدار را می دهد. روش hashCode را می توان با مجموعه هایی مانند HashMap استفاده کرد.
تفاوت بین برابر و هش کد در جاوا چیست؟
برابر است با کد هش در جاوا |
|
equals متدی در جاوا است که مشابه عملگر==عمل می کند، که به جای برابری شی، هویت شی را آزمایش می کند. | hashCode روشی است که به وسیله آن یک کلاس به طور ضمنی یا صریح داده های ذخیره شده در یک نمونه از کلاس را به یک مقدار هش واحد تجزیه می کند. |
استفاده | |
روش برابر برای مقایسه دو شی استفاده می شود. | این روش در هش کردن برای تصمیم گیری در مورد اینکه یک شی باید در کدام گروه قرار گیرد استفاده می شود. |
Summary - برابر است با کد هش در جاوا
تفاوت در برابر و هش کد در جاوا این است که از برابر برای مقایسه دو شی استفاده می شود در حالی که از هش کد در هش استفاده می شود تا تصمیم بگیرد که یک شی باید در کدام گروه طبقه بندی شود.