تاپ بنر
popup banner

سرفصل دوره

معرفی کامل متد hashcode

63,000 تومان
  • .دسترسی مادام العمر به ویدئوهای دوره
  • .دسترسی رایگان به آپدیت های دوره
  • .تدریس روان و ساده با کیفیت بالا
  • .سرفصل های بسیار جامع و غنی
1748فارغ التحصیل
avatar

مهدی عباسی

مهندس ارشد کارشناسی کامپیوتر
5

مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و ....

نظرات دانشجویان

هنوز اینجا کامنتی ثبت نشده

معرفی کامل متد hashcode

معرفی کامل متد hashcode در جاوا

در جلسه گذشته با متد equals آشنا شدیم. در این جلسه می‌خواهیم با متد hashCode آشنا شویم.

هر آبجکت و متغیر تعریف شده یک کد hash دارد(عدد بر مبنای 16) که در مواقعی می‌تواند باعث بروز مشکلاتی شود.

تابع hashCode نیز دورن کلاس object وجود دارد و می‌توان درون کلاس ها آن را override کرد.

برای مشاهده کد hash هر شی می‌توانید از تابع hash درون کلاس objects استفاده کنید.

public static void main(String[] args) {

      int x=20;

      int y=20;

       int z=10;

      System.out.println(Objects.hash(x));

      System.out.println(Objects.hash(y));

      System.out.println(Objects.hash(z));

}

خروجی

51

51

41

همانطور که مشاهده می‌کنید اگر مقدار درون متغیر برابر باشد کد hash یکسان می‌دهد. اما برای آبجکت‌های تعریف شده از کلاس‌ها اینطور نیست. به مثال زیر دقت کنید.

  public static void main(String[] args) {

        Person person1=new Person(1,"mehdi","abbasi");

        Person person2=new Person(2,"ali","rezaie");

        Person person3=new Person(2,"ali","rezaie");

        System.out.println(person1);

        System.out.println(person2);

        System.out.println(person3);

}

کلاس person را از پروژه جلسه قبل کپی کرده ایم.

خروجی

com.darsman.Person@1b6d3586

com.darsman.Person@4554617c

com.darsman.Person@74a14482

در ابتدا نام پکیچ و نام کلاس را نمایش می‌دهد که برابر با com.darsman.Person است و جلوی کاراکتر @ hashCode شده هر شی را نمایش می‌دهد. اما همانطور که مشاهده می‌کنید person2 و person3 با وجود مقدار برابر، hashCode متفاوتی دارند.

برای همین در جلسه گذشته قبل از override کردن متد equals زمانی که دو شی با مقدار برابر را مقایسه کردیم جواب false می‌آمد. در واقع متد equals ابتدا hashCode دو شی را بررسی می‌کند و اگر hashCode دو شی برابر نباشد جواب را false می‌دهد.

همچنین در ساختار set که ساختاری مشابه لیست‌ها دارند ولی عناصر تکراری درون خود را پاک می‌کند(در ادامه دوره با انواع ساختار ها در زبان جاوا آشنا می شویم). hashCode آبجکت آهمیت زیادی دارد و می تواند باعث بروز مشکلاتی شود بنابراین توصیه می‌شود زمانی که تابع equals را دورن کلاس override کردید تابع hashCode را نیز override کنید.

 

باعث افتخار هست که توانستیم با یک دوره جامع و کامل دیگر در خدمت شما عزیزان باشیم. این دوره فعلا شامل 56 جلسه آموزش با 1627 دقیقه است و در حال برگزاری و اضافه شدن مطالب می‌باشد، حتی ممکن است زمانی که این متن را می‌خوانید تعداد جلسات و تایم آن نیز بیشتر شده باشد، شما می‌توانید با تهیه این دوره به همه جلسات و بخش های آن دسترسی داشته باشید.

شما درسمنی های عزیز هر گونه سوال یا ابهامی از این جلسه داشتید می‌توانید به انجمن برنامه نویسان جاوا مراجعه کنید و سوالات خود را بپرسید.

ممنون از همراهی شما