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


معرفی کامل متد 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 دقیقه است و در حال برگزاری و اضافه شدن مطالب می‌باشد، حتی ممکن است زمانی که این متن را می‌خوانید تعداد جلسات و تایم آن نیز بیشتر شده باشد، شما می‌توانید با تهیه این دوره به همه جلسات و بخش های آن دسترسی داشته باشید.

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

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

 


نظر بدهید نظر شما در تصمیم دیگران اثرگذار است. لطفا برای ما و همراهان درسمن نظر خود را بنویسید.
برای ارسال نظر نیاز است وارد سایت شوید. در صورت نداشتن حساب کاربری عضو شوید.


مشخصات دوره


مدرس دوره : مهدی عباسی
تعداد جلسات : جلسه
مدت زمان : 2057 دقیقه
حجم دوره : 6/35 گیگابایت
سطح مهارت : پیشرفته
وضعیت دوره : پایان یافته
تعداد دانشجویان : 1064
: میانگین امتیاز
برای دسترسی به این دوره وارد یا عضو شوید.
مهدی عباسی

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