Unterschied zwischen Vergleichbar und Vergleicher

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.

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

Datei: TestSort3.java

  1. //Java Programm zur Demonstration der Verwendung von Java Comparable.  
  2. //Erstellen einer Klasse, die Comparable Interface implementiert  
  3.  java.util.*   importieren ;
  4.  java.io.*   importieren ;
  5. Klasse  Student  implementiert  Comparable<Student>{  
  6. int  rollnr;  
  7. Zeichenfolgenname;  
  8. int  -Alter;  
  9. Student( int  rollno,String name, int  age){  
  10. diese .rollno=rollno;  
  11. dieser .name=name;  
  12. dieses .age=alter;  
  13. }  
  14. public int  CompareTo(Student st){   
  15. if (alter==st.alter)  
  16. zurückgeben ;   
  17. sonst wenn (Alter>St.Alter)   
  18. Rückgabe 1 ;   
  19. anders  
  20. Rückkehr  – 1 ;  
  21. }  
  22. }  
  23. //Erstellen einer Testklasse zum Sortieren der Elemente  
  24. öffentliche Klasse  TestSort3{   
  25. public static void  main(String args[]){    
  26. ArrayList<Student> al= new  ArrayList<Student>();  
  27. al.add( new  Student( 101 , “Vijay” , 23 ));  
  28. al.add( new  Student( 106 , “Ajay” , 27 ));  
  29. al.add( new  Student( 105 , “Jai” , 21 ));  
  30.   
  31. Collections.sort(al);  
  32. für (Schüler st:al){  
  33. System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);  
  34. }  
  35. }  
  36. }  

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

  1. Klasse  Student{  
  2. int  rollnr;  
  3. Zeichenfolgenname;  
  4. int  -Alter;  
  5. Student( int  rollno,String name, int  age){  
  6. diese .rollno=rollno;  
  7. dieser .name=name;  
  8. dieses .age=alter;  
  9. }  
  10. }  

AgeComparator.java

  1.  java.util.*   importieren ;
  2. Klasse  AgeComparator  implementiert  Comparator<Student>{  
  3. öffentlicher int-  Vergleich (Schüler s1, Schüler s2) {   
  4. wenn (s1.alter==s2.alter)  
  5. zurückgeben ;   
  6. sonst wenn (s1.age>s2.age)   
  7. Rückgabe 1 ;   
  8. anders  
  9. Rückkehr  – 1 ;  
  10. }  
  11. }  

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.

  1.  java.util.*   importieren ;
  2. Klasse  NameComparator  implementiert  Comparator<Student>{  
  3. öffentlicher int-  Vergleich (Schüler s1, Schüler s2) {   
  4. return  s1.name.compareTo(s2.name);  
  5. }  
  6. }  

TestComparator.java

In dieser Klasse drucken wir die Werte des Objekts, indem wir sie nach Name und Alter sortieren.

  1. //Java Programm zur Demonstration der Verwendung von Java Comparator  
  2.  java.util.*   importieren ;
  3.  java.io.*   importieren ;
  4. Klasse  TestComparator{  
  5. public static void  main(String args[]){    
  6. // Erstellen einer Schülerliste  
  7. ArrayList<Student> al= new  ArrayList<Student>();  
  8. al.add( new  Student( 101 , “Vijay” , 23 ));  
  9. al.add( new  Student( 106 , “Ajay” , 27 ));  
  10. al.add( new  Student( 105 , “Jai” , 21 ));  
  11.   
  12. System.out.println( “Sortierung nach Namen” );  
  13. //Benutze NameComparator um die Elemente zu sortieren  
  14. Collections.sort (al, neuer  NameComparator ());  
  15. //Die Elemente der Liste durchlaufen  
  16. für (Student st: al){  
  17. System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);  
  18. }  
  19.   
  20. System.out.println( “Sortierung nach Alter” );  
  21. // Verwenden von AgeComparator zum Sortieren der Elemente  
  22. Collections.sort(al, new  AgeComparator());  
  23. // Erneutes Durchlaufen der Liste  
  24. für (Student st: al){  
  25. System.out.println(st.rollno+ ” ” +st.name+ ” ” +st.age);  
  26. }  
  27.   
  28. }  
  29. }  

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

osky