logo

Verschil tussen vergelijkbaar en comparator

Comparable en Comparator zijn beide interfaces en kunnen worden gebruikt om collectie-elementen te sorteren.

Er zijn echter veel verschillen tussen Comparable- en Comparator-interfaces, die hieronder worden weergegeven.

ubuntu-build essentieel
VergelijkbaarComparator
1) Vergelijkbaar biedt a enkele sorteervolgorde . Met andere woorden: we kunnen de collectie sorteren op basis van één element, zoals id, naam en prijs.De vergelijker biedt meerdere sorteervolgordes . Met andere woorden, we kunnen de collectie sorteren op basis van meerdere elementen, zoals ID, naam en prijs enz.
2) Vergelijkbaar beïnvloedt de oorspronkelijke klasse , dat wil zeggen dat de feitelijke klasse wordt gewijzigd.Comparator heeft geen invloed op de oorspronkelijke klasse , dat wil zeggen dat de feitelijke klasse niet wordt gewijzigd.
3) Vergelijkbare aanbiedingen vergelijkTo() methode om elementen te sorteren.Vergelijker biedt vergelijk() methode om elementen te sorteren.
4) Vergelijkbaar is aanwezig in java.lang pakket.Er is een vergelijker aanwezig in de java.util pakket.
5) We kunnen de lijstelementen van het vergelijkbare type sorteren op Collecties.sort(Lijst) methode.We kunnen de lijstelementen van het type Comparator sorteren op Collections.sort(Lijst, Vergelijker) methode.

Vergelijkbaar Java-voorbeeld

Laten we het voorbeeld bekijken van een vergelijkbare interface die de lijstelementen sorteert op basis van leeftijd.

Bestand: 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); } } } 
Test het nu

Uitgang:

 105 Jai 21 101 Vijay 23 106 Ajay 27 

Java-vergelijkingsvoorbeeld

Laten we een voorbeeld bekijken van de Java Comparator-interface waarin we de elementen van een lijst sorteren met behulp van verschillende comparatoren.

Romeinse cijfers 1-100
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; } } 
NaamComparator.java

Deze klasse biedt vergelijkingslogica op basis van de naam. In dat geval gebruiken we de methode CompareTo() van de klasse String, die intern de vergelijkingslogica levert.

hoe oud is pete davidson
 import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } } 
TestComparator.java

In deze klasse drukken we de waarden van het object af door te sorteren op basis van naam en leeftijd.

 //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); } } } 

Uitgang:

 Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27