يتم استخدام واجهة Java القابلة للمقارنة لترتيب كائنات الفئة المحددة من قبل المستخدم. تم العثور على هذه الواجهة في حزمة java.lang وتحتوي على طريقة واحدة فقط تسمى CompareTo(Object). فهو يوفر تسلسل فرز واحد فقط، أي أنه يمكنك فرز العناصر على أساس عضو بيانات واحد فقط. على سبيل المثال، قد يكون رولنو، الاسم، العمر أو أي شيء آخر.
طريقة المقارنة (كائن obj).
int العام CompareTo(Object obj): يتم استخدامه لمقارنة الكائن الحالي بالكائن المحدد. يعود
- عدد صحيح موجب، إذا كان الكائن الحالي أكبر من الكائن المحدد.
- عدد صحيح سالب، إذا كان الكائن الحالي أقل من الكائن المحدد.
- صفر، إذا كان الكائن الحالي يساوي الكائن المحدد.
يمكننا فرز العناصر:
- كائنات السلسلة
- كائنات الطبقة المجمعة
- كائنات فئة محددة من قبل المستخدم
فئة المجموعات
المجموعات يوفر الفصل طرقًا ثابتة لفرز عناصر المجموعات. إذا كانت عناصر المجموعة من Set أو Map، فيمكننا استخدام TreeSet أو TreeMap. ومع ذلك، لا يمكننا فرز عناصر القائمة. توفر فئة المجموعات طرقًا لفرز عناصر عناصر نوع القائمة.
طريقة فئة المجموعات لفرز عناصر القائمة
فرز الفراغ العام (قائمة القائمة): يتم استخدامه لفرز عناصر القائمة. يجب أن تكون عناصر القائمة من النوع القابل للمقارنة.
ملاحظة: تقوم فئة السلسلة وفئة الغلاف بتطبيق الواجهة القابلة للمقارنة بشكل افتراضي. لذا، إذا قمت بتخزين كائنات سلسلة أو فئات مجمعة في قائمة أو مجموعة أو خريطة، فستكون قابلة للمقارنة بشكل افتراضي.
جافا مثال مماثل
دعونا نرى مثال الواجهة القابلة للمقارنة التي تقوم بفرز عناصر القائمة على أساس العمر.
الملف: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age>st.age) return 1; else return -1; } }
الملف: TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
جافا مثال مشابه: ترتيب عكسي
دعونا نرى نفس المثال للواجهة القابلة للمقارنة التي تقوم بفرز عناصر القائمة على أساس العمر بترتيب عكسي.
الملف: Student.java
class Student implements Comparable{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int compareTo(Student st){ if(age==st.age) return 0; else if(age<st.age) return 1; else -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(new Student(101,'Vijay',23)); al.add(new Student(106,'Ajay',27)); al.add(new Student(105,'Jai',21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21