Javaالإنترفيس Comparator في جافا
- مقدمة
- دوال الإنترفيس Comparator
- مثال شامل
مقدمة
الإنترفيس Comparator مصمم لمقارنة قيم الكائنات.
يعتمد عليه كل إنترفيس يقوم بترتيب الكائنات التي يتم إدخلها فيه, سواء كان ترتيباً حسب القيمة أو ترتيباً أبجدياً.
فمثلاً، عند إنشاء كائن من الكلاس TreeSet نجد العناصر فيه تم ترتيبها بشكل تصاعدي حسب قيمهم في حال كانت عناصره عبارة عن أرقام، أو ترتيباً أبجدياً في حال كانت عناصره تمثل نصوص.
دوال الإنترفيس Comparator
الجدول التالي يحتوي على دوال الإنترفيس Comparator.
الدالة مع تعريفها | |
---|---|
1 | public int compare(Object obj1, Object obj2)
تقارن الكائن obj1 و الكائن obj2 من أجل ترتيبهم. يجب أن تفعل لها Override لتحدد كيف تريدها أن تقارن الكائنين, أي على أي أساس سيتم ترتيبهم. فمثلاً يمكنك جعلها تقارن عدد أحرف الكائنين في حال كانوا عبارة عن نصوص, و يمكنك جعلها تقارن قيمة الكائنين في حال كانوا عبارة عن أرقام. |
2 | public boolean equals(Object obj) ترجع true في حال كان الكائن الموضوع فيها كـ Argument يساوي الكائن الذي قام باستدعائها. |
مثال شامل
في المثال التالي قمنا بإنشاء كلاس إسمه NumbersComparator يفعل implements للإنترفيس Comparator.
إذاً على الكلاس NumbersComparator أن يفعل Override للدالة compare() حتى تقارن الأرقام بالطريقة التي نريد.
الدالة compare() عندها باراميترين من النوع Object. يجب جعلها تقارن أي كائنين نمررهما لها بالطريقة التي نريد.
سنجعلها تقارن أي رقمين كالتالي:
- ترجع
0
في حال كانا متساوييان. - ترجع
1
في حال كانت قيمة الكائن num1 أكبر من قيمة الكائن num2. - ترجع
-1
في حال كانت قيمة الكائن num1 أصغر من قيمة الكائن num2.
في الأخير قمنا بإنشاء كلاس إسمه Main لتجربة الدالة compare() فيه.
سنحصل على النتيجة التالية عند التشغيل.