Java Comparable interface bruges til at bestille objekterne i den brugerdefinerede klasse. Denne grænseflade findes i pakken java.lang og indeholder kun én metode ved navn compareTo(Object). Det giver kun en enkelt sorteringssekvens, dvs. du kan sortere elementerne kun på basis af et enkelt datamedlem. Det kan for eksempel være rollno, navn, alder eller andet.
compareTo(Object obj) metode
public int compareTo(Object obj): Det bruges til at sammenligne det aktuelle objekt med det angivne objekt. Det vender tilbage
- positivt heltal, hvis det aktuelle objekt er større end det angivne objekt.
- negativt heltal, hvis det aktuelle objekt er mindre end det angivne objekt.
- nul, hvis det aktuelle objekt er lig med det angivne objekt.
Vi kan sortere elementerne i:
- String objekter
- Indpakningsklasseobjekter
- Brugerdefinerede klasseobjekter
Samlinger klasse
Samlinger klasse giver statiske metoder til at sortere elementerne i samlinger. Hvis samlingselementer er af Set eller Map, kan vi bruge TreeSet eller TreeMap. Vi kan dog ikke sortere elementerne i List. Collections class giver metoder til at sortere elementerne i Liste-typeelementer.
Metode for samlinger klasse til sortering af listeelementer
offentlig void sortering(listeliste): Det bruges til at sortere elementerne i List. Listeelementer skal være af den sammenlignelige type.
Bemærk: String class og Wrapper klasser implementerer som standard den Sammenlignbare grænseflade. Så hvis du gemmer objekterne i streng- eller wrapper-klasser i en liste, et sæt eller et kort, vil det som standard være sammenligneligt.
Java sammenligneligt eksempel
Lad os se eksemplet med den sammenlignelige grænseflade, der sorterer listeelementerne på basis af 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 sammenligneligt eksempel: omvendt rækkefølge
Lad os se det samme eksempel på den sammenlignelige grænseflade, der sorterer listeelementerne på basis af alder i omvendt rækkefø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