الفرق بين يساوي و hashCode في جافا

جدول المحتويات:

الفرق بين يساوي و hashCode في جافا
الفرق بين يساوي و hashCode في جافا

فيديو: الفرق بين يساوي و hashCode في جافا

فيديو: الفرق بين يساوي و hashCode في جافا
فيديو: 159 java Object Class toString hashCode equals استخدام الطرق لكلاس اوبجكت 2024, يوليو
Anonim

الفرق الرئيسي - يساوي مقابل رمز التجزئة في Java

يساوي عامل التشغيل==، وهو اختبار هوية الكائن بدلاً من مساواة الكائن. hashCode هي طريقة تقوم من خلالها فئة بشكل ضمني أو صريح بتقسيم البيانات المخزنة في مثيل للفئة إلى قيمة تجزئة واحدة ، وهي عبارة عن عدد صحيح موقعة 32 بت. يتمثل الاختلاف الرئيسي بين equals و hashCode في Java في أنه يتم استخدام equals لمقارنة كائنين بينما يتم استخدام hashCode في التجزئة لتحديد المجموعة التي يجب تصنيف كائن إليها.

ما هو يساوي في جافا؟

يتم استخدام طريقة equals لمقارنة شيئين.يتم تحديد طريقة يساوي الافتراضية في فئة الكائن. هذا التنفيذ مشابه لعامل التشغيل==. يتساوى مراجع الكائنين فقط إذا كانا يشيران إلى نفس الكائن. من الممكن تجاوز طريقة يساوي

الفرق بين يساوي و hashCode في جافا
الفرق بين يساوي و hashCode في جافا

الشكل 01: برنامج Java مع يساوي

ستعطي العبارة 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) ؛

لا توجد طريقة يساوي في فئة الطالب. لذلك ، يتم استدعاء التساوي في فئة الكائن. يتم عرض True فقط إذا كان مرجع الكائن يشير إلى نفس الكائن.

الفرق بين يساوي و hashCode في Java_Figure 02
الفرق بين يساوي و hashCode في Java_Figure 02

الشكل 02: برنامج Java مع تجاوز يساوي

وفقًا للبرنامج أعلاه ، يتم تجاوز طريقة equals. يتم تمرير كائن إلى الطريقة ، ويتم إرساله إلى الطالب. بعد ذلك ، يتم فحص قيم المعرفات. إذا كانت قيم المعرف متشابهة ، فسوف تعود صحيحة. إذا لم يكن كذلك ، فسوف يعود خطأ. هويات s1 و s2 متشابهة. لذلك ، سوف تطبع صحيح. معرفات s1 و s3 متشابهة أيضًا ، لذلك ستتم طباعتها بشكل صحيح.

ما هو كود التجزئة في جافا؟

يتم استخدام رمز التجزئة في التجزئة لتحديد المجموعة التي يجب تصنيف كائن إليها. يمكن لمجموعة من الكائنات مشاركة نفس رمز التجزئة. يمكن لوظيفة التجزئة الصحيحة توزيع الكائنات بالتساوي في مجموعات مختلفة.

يمكن أن يكون لرمز التجزئة الصحيح خصائص على النحو التالي.افترض أن هناك كائنين مثل obj1 و obj2. إذا كانت obj1.equals (obj2) صحيحة ، فإن obj1.hashCode () يساوي obj2.hashCode (). إذا كانت obj1.equals (obj2) خاطئة ، فليس من الضروري ألا تكون obj1.hashCode () مساوية لـ obj2.hashCode (). قد يكون للكائنين غير المتكافئين نفس رمز التجزئة.

الفرق بين يساوي و hashCode في Java_Figure 03
الفرق بين يساوي و hashCode في Java_Figure 03

الشكل 03: صف الطالب مع يساوي و hashCode

الفرق الرئيسي بين يساوي و hashCode في Java
الفرق الرئيسي بين يساوي و hashCode في Java

الشكل 04: البرنامج الرئيسي

يحتوي فصل الطالب على أساليب equals و hashCode. ستتلقى طريقة equals في فصل الطالب كائنًا. إذا كان الكائن فارغًا ، فسيتم إرجاعه كاذب.إذا كانت فئات الكائنات غير متطابقة ، فستعيد القيمة false. يتم التحقق من قيم المعرف في كلا الكائنين. إذا كانت متشابهة ، فستعود صحيحًا. وإلا فإنه سيعود خطأ.

في البرنامج الرئيسي ، يتم إنشاء الكائنين s1 و s2. عند استدعاء s1.equals (s2) سيعطي true لأن طريقة equals تم تجاوزها وتتحقق من قيم id لكائنين. على الرغم من أنها تشير إلى كائنين ، إلا أن الإجابة صحيحة لأن قيم معرف s1 و s2 هي نفسها. نظرًا لأن s1.equals (s2) صحيح ، يجب أن يكون رمز التجزئة الخاص بـ s1 و s2 متساويًا. تعطي طباعة رمز التجزئة الخاص بـ s1 و s2 نفس القيمة. يمكن استخدام طريقة hashCode مع مجموعات مثل HashMap

ما هو الفرق بين يساوي و hashCode في جافا؟

يساوي مقابل hashCode في Java

يساوي طريقة في Java تعمل بشكل مشابه لعامل التشغيل==، وهو اختبار هوية الكائن بدلاً من مساواة الكائن. hashCode هي طريقة تقوم من خلالها فئة بشكل ضمني أو صريح بتقسيم البيانات المخزنة في مثيل للفئة إلى قيمة تجزئة واحدة.
الاستخدام
يتم استخدام طريقة يساوي للمقارنة بين شيئين. يتم استخدام الطريقة في التجزئة لتحديد المجموعة التي يجب وضع كائن فيها.

ملخص - يساوي مقابل كود التجزئة في جافا

الاختلاف في equals و hashCode في Java هو أنه يتم استخدام المساواة لمقارنة كائنين بينما يتم استخدام hashCode في التجزئة لتحديد المجموعة التي يجب تصنيف كائن إليها.

موصى به: