تخطَّ إلى المحتوى

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 الكامل بالعربي.