تعتبر كل من Comparable و Comparator واجهات ويمكن استخدامها لفرز عناصر المجموعة.
ومع ذلك، هناك العديد من الاختلافات بين الواجهات القابلة للمقارنة والواجهات المقارنة الموضحة أدناه.
1 مليار إلى مليون
قابلة للمقارنة | المقارنة |
---|---|
1) يوفر المقارنة أ تسلسل فرز واحد . بمعنى آخر، يمكننا فرز المجموعة على أساس عنصر واحد مثل المعرف والاسم والسعر. | يوفر المقارن تسلسلات فرز متعددة . بمعنى آخر، يمكننا فرز المجموعة على أساس عناصر متعددة مثل المعرف والاسم والسعر وما إلى ذلك. |
2) قابلة للمقارنة يؤثر على الطبقة الأصلية ، أي تم تعديل الفئة الفعلية. | المقارنة لا يؤثر على الطبقة الأصلية ، أي لم يتم تعديل الفئة الفعلية. |
3) يوفر مماثلة طريقة المقارنة (). لفرز العناصر. | يوفر المقارنة طريقة المقارنة (). لفرز العناصر. |
4) المقارن موجود في java.lang طَرد. | المقارنة موجودة في java.util طَرد. |
5) يمكننا فرز عناصر القائمة من النوع المقارن حسب مجموعات.فرز(قائمة) طريقة. | يمكننا فرز عناصر القائمة من نوع المقارنة حسب Collections.sort(قائمة، مقارنة) طريقة. |
جافا مثال مماثل
دعونا نرى مثالاً للواجهة القابلة للمقارنة والتي تقوم بفرز عناصر القائمة على أساس العمر.
الملف: TestSort3.java
//Java Program to demonstrate the use of Java Comparable. //Creating a class which implements Comparable Interface import java.util.*; import java.io.*; 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; } } //Creating a test class to sort the elements public class TestSort3{ 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
مثال مقارنة جافا
دعونا نرى مثالاً لواجهة Java Comparator حيث نقوم بفرز عناصر القائمة باستخدام مقارنات مختلفة.
Student.javaclass Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } }AgeComparator.java
import java.util.*; class AgeComparator implements Comparator{ public int compare(Student s1,Student s2){ if(s1.age==s2.age) return 0; else if(s1.age>s2.age) return 1; else return -1; } }NameComparator.java
توفر هذه الفئة منطق المقارنة بناءً على الاسم. في مثل هذه الحالة، نستخدم طريقة CompareTo() لفئة السلسلة، والتي توفر منطق المقارنة داخليًا.
import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } }TestComparator.java
في هذا الفصل، نقوم بطباعة قيم الكائن عن طريق الفرز على أساس الاسم والعمر.
//Java Program to demonstrate the use of Java Comparator import java.util.*; import java.io.*; class TestComparator{ public static void main(String args[]){ //Creating a list of students 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)); System.out.println('Sorting by Name'); //Using NameComparator to sort the elements Collections.sort(al,new NameComparator()); //Traversing the elements of list for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } System.out.println('sorting by Age'); //Using AgeComparator to sort the elements Collections.sort(al,new AgeComparator()); //Travering the list again for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
انتاج:
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27