What do you know about (equal method
في جافا إن عملية المقارنة بين الانماط البدائية تتم باستعمال العملية = = أما إذا استعملنا العملية السابقة للمقارنة بين الأغراض فإنها تقوم بالمقارنة بين عناويين الاغراض وليس الاغراض بحد ذاتهم
أما إذا أردنا أن تتم المقارنة بين محتوى الاغراض يجب علينا استعمال الطريقة
Equal( )
وحسب طبيعة المقارنة التي تريدها أن تتم يجب عليك إعادة تعريف هذه الطريقة في الصف الذي تنشئه بحيث تلائم إحتياجاتك , ولكن عليك أثناء إعادة تعريفها مراعاة مايلي :
1 – يجب أن يكون المعامل الذي يدخل للإجرائية هو من نمط
Object
و إياك ثم إياك أن تجعلة من نمط الصف الذي تبنيه , لأنك بهذه الطريقة تقوم بعملية تحميل زائد أي ما يعرف ب
overload
بدل القيام بعملية
Override
2 – في حال كنت تنوي أن تدخل أغراض من صفك في
Map
(الذي هو بمثابة جدول تقطيع )
عليك أن تعرف الطريقة
hashCode( )
(التي هي بمثابة تابع تقطيع ) ,بحيث تعطي هذه الطريقة بالنسبة لغرضين( متساويين بعد تطبيق الطريقة
Equal( )
عليهم )
نفس القيمة , حتى يدخلوا بنفس المدخل من جدول التقطيع, و إلا فقدنا فعالية جدول التقطيع
ملاحظة :
في أسوأ الاحوال أجعل الطريقة
hashCode( )
تعيد نفس القيمة ولتكن قيمة ثابتة لكل العناصر,صحيح أن جدول التقطيع عندها سيتصرف ك
linkedList( )
لكن تعريف الطريقة
hashCode( )
عندها على الاقل سيكون صحيحاً
ملاحظة خاصة :
أناأدرس هذه الأفكار أثناء دراستي لشهادة
Java Certificate
وأحببت أن أوصلها لكم لتعم الفائدة,فيرجى إذا لم تكن أحد الأفكار واضحة الإشارة لذلك , و سأقوم بشرحها بالتفصيل
وشكراً لكم .