Comparable und Comparator sind beide Schnittstellen und können zum Sortieren von Sammlungselementen verwendet werden.
Es gibt jedoch viele Unterschiede zwischen Comparable- und Comparator-Schnittstellen, die im Folgenden aufgeführt sind.
Vergleichbar | Komparator |
---|---|
1) Vergleichbare Angebote a einzelne Sortierreihenfolge . Mit anderen Worten: Wir können die Sammlung nach einem einzelnen Element wie ID, Name und Preis sortieren. | Der Komparator bietet mehrere Sortierreihenfolgen . Mit anderen Worten: Wir können die Sammlung nach mehreren Elementen wie ID, Name und Preis usw. sortieren. |
2) Vergleichbar wirkt sich auf die ursprüngliche Klasse aus , d. h. die eigentliche Klasse wird geändert. | Komparator hat keinen Einfluss auf die ursprüngliche Klasse , d. h. die eigentliche Klasse wird nicht verändert. |
3) Vergleichbare Angebote CompareTo()-Methode Elemente zu sortieren. | Komparator bietet Compare()-Methode Elemente zu sortieren. |
4) Vergleichbar ist vorhanden in java.lang Paket. | Ein Komparator ist im vorhanden java.util Paket. |
5) Wir können die Listenelemente vom Typ „Vergleichbar“ sortieren Collections.sort(Liste) Methode. | Wir können die Listenelemente vom Typ Comparator sortieren Collections.sort(Liste, Komparator) Methode. |
Java-vergleichbares Beispiel
Sehen wir uns das Beispiel einer Comparable-Schnittstelle an, die die Listenelemente nach Alter sortiert.
Datei: 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); } } }Testen Sie es jetzt
Ausgabe:
105 Jai 21 101 Vijay 23 106 Ajay 27
Beispiel für einen Java-Komparator
Sehen wir uns ein Beispiel der Java Comparator-Schnittstelle an, in der wir die Elemente einer Liste mithilfe verschiedener Komparatoren sortieren.
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
Diese Klasse stellt eine Vergleichslogik basierend auf dem Namen bereit. In diesem Fall verwenden wir die Methode „compareTo()“ der Klasse „String“, die intern die Vergleichslogik bereitstellt.
import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } }TestComparator.java
In dieser Klasse drucken wir die Werte des Objekts aus, indem wir sie nach Name und Alter sortieren.
//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); } } }
Ausgabe:
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27