Java Comparable-grensesnitt brukes til å bestille objektene til den brukerdefinerte klassen. Dette grensesnittet finnes i java.lang-pakken og inneholder bare én metode kalt compareTo(Object). Den gir kun en enkelt sorteringssekvens, det vil si at du kan sortere elementene kun på grunnlag av enkelt datamedlem. Det kan for eksempel være rollno, navn, alder eller noe annet.
compareTo(Object obj)-metoden
public int compareTo(Object obj): Den brukes til å sammenligne gjeldende objekt med det angitte objektet. Den kommer tilbake
- positivt heltall, hvis gjeldende objekt er større enn det angitte objektet.
- negativt heltall, hvis gjeldende objekt er mindre enn det angitte objektet.
- null, hvis gjeldende objekt er lik det spesifiserte objektet.
Vi kan sortere elementene i:
- Stringobjekter
- Innpakningsklasseobjekter
- Brukerdefinerte klasseobjekter
Samlinger klasse
Samlinger klasse gir statiske metoder for å sortere elementene i samlinger. Hvis samlingselementer er av Set eller Map, kan vi bruke TreeSet eller TreeMap. Vi kan imidlertid ikke sortere elementene i List. Samlinger-klassen gir metoder for å sortere elementene i listetypeelementer.
Metode for samlinger-klassen for sortering av listeelementer
offentlig void sortering(listeliste): Den brukes til å sortere elementene i List. Listeelementer må være av sammenlignbar type.
Merk: String class og Wrapper-klasser implementerer Comparable-grensesnittet som standard. Så hvis du lagrer objektene til streng- eller wrapper-klasser i en liste, et sett eller et kart, vil det være sammenlignbart som standard.
Java-sammenlignbart eksempel
La oss se eksempelet på Comparable-grensesnittet som sorterer listeelementene på grunnlag av alder.
Fil: Student.java
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; } }
Fil: TestSort1.java
import java.util.*; public class TestSort1{ 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); } } }
105 Jai 21 101 Vijay 23 106 Ajay 27
Java-sammenlignbart eksempel: omvendt rekkefølge
La oss se det samme eksempelet på Comparable-grensesnittet som sorterer listeelementene på grunnlag av alder i omvendt rekkefølge.
Fil: Student.java
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 -1; } < pre> <p>File: TestSort2.java</p> <pre> import java.util.*; public class TestSort2{ 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); } } } </pre> <pre> 106 Ajay 27 101 Vijay 23 105 Jai 21 </pre></st.age)>
106 Ajay 27 101 Vijay 23 105 Jai 21