Comparator
مقارنة الكائنات Comparator Comparator
Comparator تُعرّف طريقة مقارنة مخصصة بين كائنتين — مفيدة للترتيب حسب معايير مختلفة.
Comparator واجهة دالية تأخذ كائنتين وتعيد عددًا: سالب إذا الأولى أقل، صفر إذا متساويتان، موجب إذا الثانية أقل. تُستخدم مع sort لترتيب مخصص بدل الترتيب الطبيعي الافتراضي.
الصياغة
Comparator<T> comp = (a, b) -> a.length() - b.length(); list.sort(comp); // أو: Comparator.comparingInt(T::length)
📄 مثال
import java.util.*;
ArrayList<String> names = new ArrayList<>(
Arrays.asList("سارة", "أحمد", "محمد", " علي")
);
names.sort(Comparator.comparingInt(String::length));
System.out.println(names); // [ علي, سارة, أحمد, محمد]
names.sort(Comparator.comparingInt(String::length).reversed());
System.out.println(names); // [محمد, سارة, أحمد, علي]أهم النقاط
| العنصر | الوظيفة |
|---|---|
| Comparator.comparing(fn) | يُنشئ comparator من دالة استخراج |
| Comparator.comparingInt(fn) | مقارنة بالأعداد الصحيحة — أسرع |
| reversed() | عكس ترتيب المقارنة |
| thenComparing() | مقارنة ثانية عند التساوي |
| list.sort(comp) | ترتيب القائمة بمقارنة مخصصة |
💡 نصائح عملية
- استخدم Comparator.comparingInt() بدل Comparator.comparing() مع الأعداد — أسرع
- thenComparing() تسمح بمقارنة متعددة المعايير: الترتيب بالأولى ثم الثانية
⚠️ أخطاء شائعة
- nxing Comparator على نوع لا يدعم compareTo — تأكد من وجود natural ordering
- nxing null في comparator — تسبب NullPointerException
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.