Java Comparable-gränssnitt används för att beställa objekten i den användardefinierade klassen. Det här gränssnittet finns i paketet java.lang och innehåller endast en metod som heter compareTo(Object). Den tillhandahåller endast en enda sorteringssekvens, det vill säga du kan sortera elementen på basis av endast en datamedlem. Det kan till exempel vara rollno, namn, ålder eller något annat.
compareTo(Object obj)-metoden
public int compareTo(Object obj): Den används för att jämföra det aktuella objektet med det angivna objektet. Den återkommer
- positivt heltal, om det aktuella objektet är större än det angivna objektet.
- negativt heltal, om det aktuella objektet är mindre än det angivna objektet.
- noll, om det aktuella objektet är lika med det angivna objektet.
Vi kan sortera elementen i:
huvudmetod java
- Strängobjekt
- Omslagsklassobjekt
- Användardefinierade klassobjekt
Samlingsklass
Samlingar klass tillhandahåller statiska metoder för att sortera elementen i samlingar. Om samlingselement är av Set eller Map kan vi använda TreeSet eller TreeMap. Men vi kan inte sortera elementen i List. Collections class tillhandahåller metoder för att sortera elementen i listtypelement.
Metod för samlingsklass för sortering av listelement
public void sort(List lista): Den används för att sortera elementen i List. Listelement måste vara av typen Comparable.
log4j
Obs: Klasserna String class och Wrapper implementerar gränssnittet Comparable som standard. Så om du lagrar objekten i sträng- eller omslagsklasser i en lista, uppsättning eller karta kommer den att vara jämförbar som standard.
Java-jämförbart exempel
Låt oss se exemplet med det jämförbara gränssnittet som sorterar listelementen på basis av ålder.
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
Jämförbart Java-exempel: omvänd ordning
Låt oss se samma exempel på det jämförbara gränssnittet som sorterar listelementen på basis av ålder i omvänd ordning.
java filterström
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