logo

Unterschied zwischen Comparable und Comparator

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.

VergleichbarKomparator
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.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

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