logo

الفرق بين المقارن والمقارن

تعتبر كل من 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.java
 class 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