Comparable og Comparator er begge grensesnitt og kan brukes til å sortere samlingselementer.
ssh full form
Imidlertid er det mange forskjeller mellom sammenlignbare og komparatorgrensesnitt som er gitt nedenfor.
Sammenlignbar | Komparator |
---|---|
1) Sammenlignbare gir en enkelt sorteringssekvens . Med andre ord kan vi sortere samlingen på grunnlag av et enkelt element som id, navn og pris. | Komparatoren gir flere sorteringssekvenser . Med andre ord kan vi sortere samlingen på grunnlag av flere elementer som id, navn og pris osv. |
2) Sammenlignbar påvirker den opprinnelige klassen , dvs. den faktiske klassen er modifisert. | Komparator påvirker ikke den opprinnelige klassen , dvs. den faktiske klassen er ikke endret. |
3) Sammenlignbare tilbud compareTo()-metoden å sortere elementer. | Komparator gir sammenligne() metode å sortere elementer. |
4) Sammenlignbar finnes i java.lang pakke. | En komparator er til stede i java.util pakke. |
5) Vi kan sortere listeelementene av sammenlignbar type etter Collections.sort(List) metode. | Vi kan sortere listeelementene av Comparator type etter Collections.sort(List, Comparator) metode. |
Java-sammenlignbart eksempel
La oss se eksempelet på et sammenlignbart grensesnitt som sorterer listeelementene på grunnlag av alder.
Fil: 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 det nå
Produksjon:
105 Jai 21 101 Vijay 23 106 Ajay 27
Eksempel på Java-komparator
La oss se et eksempel på Java Comparator-grensesnittet der vi sorterer elementene i en liste ved hjelp av forskjellige komparatorer.
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
Denne klassen gir sammenligningslogikk basert på navnet. I slike tilfeller bruker vi compareTo()-metoden til String-klassen, som internt gir sammenligningslogikken.
import java.util.*; class NameComparator implements Comparator{ public int compare(Student s1,Student s2){ return s1.name.compareTo(s2.name); } }TestComparator.java
I denne klassen skriver vi ut verdiene til objektet ved å sortere på grunnlag av navn og alder.
hva er 10 av 1 million
//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); } } }
Produksjon:
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27