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 unten angegeben sind.
Vergleichbar | Komparator |
---|---|
1) Vergleichbar bietet eine einzelne Sortierreihenfolge . Mit anderen Worten, wir können die Sammlung auf der Grundlage eines einzelnen Elements wie ID, Name und Preis sortieren. | Der Comparator bietet mehrere Sortierfolgen . Mit anderen Worten, wir können die Sammlung auf der Grundlage mehrerer Elemente wie ID, Name und Preis usw. sortieren. |
2) Vergleichbar wirkt sich auf die ursprüngliche Klasse aus, dh die aktuelle Klasse wird modifiziert. | Comparator wirkt sich nicht auf die ursprüngliche Klasse aus, dh die tatsächliche Klasse wird nicht geändert. |
3) Comparable bietet die Methode CompareTo() zum Sortieren von Elementen. | Comparator bietet die Methode Compare() zum Sortieren von Elementen. |
4) Vergleichbar ist im java.lang -Paket vorhanden. | Ein Comparator ist im Paket java.util vorhanden . |
5) Wir können die Listenelemente des Typs Comparable nach der Methode Collections.sort(List) sortieren. | Wir können die Listenelemente vom Typ Comparator nach der Methode Collections.sort(List, Comparator) sortieren. |
Vergleichbares Java-Beispiel
Sehen wir uns das Beispiel einer vergleichbaren Schnittstelle an, die die Listenelemente nach Alter sortiert.
- //Java Programm zur Demonstration der Verwendung von Java Comparable.
- //Erstellen einer Klasse, die Comparable Interface implementiert
- java.util.* importieren ;
- java.io.* importieren ;
- Klasse Student implementiert Comparable<Student>{
- int rollnr;
- Zeichenfolgenname;
- int -Alter;
- Student( int rollno,String name, int age){
- diese .rollno=rollno;
- dieser .name=name;
- dieses .age=alter;
- }
- public int CompareTo(Student st){
- if (alter==st.alter)
- 0 zurückgeben ;
- sonst wenn (Alter>St.Alter)
- Rückgabe 1 ;
- anders
- Rückkehr – 1 ;
- }
- }
- //Erstellen einer Testklasse zum Sortieren der Elemente
- öffentliche Klasse TestSort3{
- public static void main(String args[]){
- ArrayList<Student> al= new ArrayList<Student>();
- al.add( new Student( 101 , “Vijay” , 23 ));
- al.add( new Student( 106 , “Ajay” , 27 ));
- al.add( new Student( 105 , “Jai” , 21 ));
- Collections.sort(al);
- für (Schüler st:al){
- System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);
- }
- }
- }
Ausgabe:
105 Jai 21 101 Vijay 23 106 Ajai 27
Java-Komparator-Beispiel
Sehen wir uns ein Beispiel der Java Comparator-Schnittstelle an, in der wir die Elemente einer Liste mit verschiedenen Komparatoren sortieren.Student.java
- Klasse Student{
- int rollnr;
- Zeichenfolgenname;
- int -Alter;
- Student( int rollno,String name, int age){
- diese .rollno=rollno;
- dieser .name=name;
- dieses .age=alter;
- }
- }
- java.util.* importieren ;
- Klasse AgeComparator implementiert Comparator<Student>{
- öffentlicher int- Vergleich (Schüler s1, Schüler s2) {
- wenn (s1.alter==s2.alter)
- 0 zurückgeben ;
- sonst wenn (s1.age>s2.age)
- Rückgabe 1 ;
- anders
- Rückkehr – 1 ;
- }
- }
NameComparator.java
Diese Klasse stellt eine auf dem Namen basierende Vergleichslogik bereit. In diesem Fall verwenden wir die Methode CompareTo() der Klasse String, die intern die Vergleichslogik bereitstellt.
- java.util.* importieren ;
- Klasse NameComparator implementiert Comparator<Student>{
- öffentlicher int- Vergleich (Schüler s1, Schüler s2) {
- return s1.name.compareTo(s2.name);
- }
- }
TestComparator.java
In dieser Klasse drucken wir die Werte des Objekts, indem wir sie nach Name und Alter sortieren.
- //Java Programm zur Demonstration der Verwendung von Java Comparator
- java.util.* importieren ;
- java.io.* importieren ;
- Klasse TestComparator{
- public static void main(String args[]){
- // Erstellen einer Schülerliste
- ArrayList<Student> al= new ArrayList<Student>();
- al.add( new Student( 101 , “Vijay” , 23 ));
- al.add( new Student( 106 , “Ajay” , 27 ));
- al.add( new Student( 105 , “Jai” , 21 ));
- System.out.println( “Sortierung nach Namen” );
- //Benutze NameComparator um die Elemente zu sortieren
- Collections.sort (al, neuer NameComparator ());
- //Die Elemente der Liste durchlaufen
- für (Student st: al){
- System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);
- }
- System.out.println( “Sortierung nach Alter” );
- // Verwenden von AgeComparator zum Sortieren der Elemente
- Collections.sort(al, new AgeComparator());
- // Erneutes Durchlaufen der Liste
- für (Student st: al){
- System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);
- }
- }
- }
Ausgabe:
Nach Namen sortieren 106 Ajai 27 105 Jai 21 101 Vijay 23 Sortierung nach Alter 105 Jai 21 101 Vijay 23 106 Ajai 27