+1 امتیاز
قبل در برنامه نویسی توسط (15 امتیاز)
ویرایش شده قبل توسط

درمورد متدهای hashcode و equals مطالب دوستان در سوالات قبل رو خوندم میخواستم بدونم آیا برداشت من درسته یانه:

1- چون برای ذخیره و بازیابی اشیا درون hash base collection ها از متد hashcode و equals استفاده میشه پس اگر قرار اشیا کلاس ما درون این نوع collection ها استفاده بشن حتما باید علاوه برhashcode متد equals هم تعریف شود چون امکان تساوی hash در چندین  شی وجود داره و نبود متد equals امکان عدم بازیابی شی رو بالا میبره.

2- اگه متد equals رو بازنویسی میکنیم چون هر دو شی مساوی باید hashcode یکسانی داشته باشن پس حتما باید متد hashcode رو بازنویسی کنیم.

3- اگه هدف ما فقط بررسی تساوی هست و نمیخوایم از اشیا کلاس درون hash base collection استفاده کنیم فقط متد equals کافیه هرچند باز توصیه به بازنویسی متد hashcode هست.

4- استفاده به تنهایی از متد hashcode مفهومی ندارد.

آیا برداشت من در مورد کاربرد این دو متد صحیح هست؟ اگه نه لطفا تصحیح بفرمایید. بسیار ممنون

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

​مواردی که ذکر کردین کاملا درسته، فقط درباره مورد چهارم یک نکته بگم که استفاده به تنهایی از متد hashcode نه تنها مفهومی ندارد بلکه ممکنه باعث خطا در لاجیک برنامه شما بشود بنابراین حتما باید هر دو متد را با هم override کنید.

قبل توسط (15 امتیاز)
بسیار بسیار از پاسخ شما سپاسگزارم

سوالات مشابه

+1 امتیاز
1 پاسخ 4.3هزار بازدید
0 امتیاز
1 پاسخ 2.1هزار بازدید
+3 امتیاز
1 پاسخ 762 بازدید
+1 امتیاز
1 پاسخ 526 بازدید
+1 امتیاز
2 پاسخ 495 بازدید
0 امتیاز
1 پاسخ 409 بازدید
+2 امتیاز
1 پاسخ 967 بازدید
...