Java Comparable sučelje koristi se za naručivanje objekata korisnički definirane klase. Ovo se sučelje nalazi u paketu java.lang i sadrži samo jednu metodu pod nazivom compareTo(Object). Omogućuje samo jednu sekvencu sortiranja, tj. možete sortirati elemente samo na temelju jednog podatkovnog člana. Na primjer, to može biti rollno, ime, dob ili bilo što drugo.
metoda compareTo(Object obj).
public int compareTo(Object obj): Koristi se za usporedbu trenutnog objekta s navedenim objektom. Vraća se
- pozitivan cijeli broj, ako je trenutni objekt veći od navedenog objekta.
- negativni cijeli broj, ako je trenutni objekt manji od navedenog objekta.
- nula, ako je trenutni objekt jednak navedenom objektu.
Možemo sortirati elemente:
- String objekti
- Objekti klase omotača
- Korisnički definirani objekti klase
Klasa zbirki
Zbirke klasa pruža statičke metode za sortiranje elemenata kolekcija. Ako su elementi zbirke Set ili Map, možemo koristiti TreeSet ili TreeMap. Međutim, ne možemo sortirati elemente popisa. Klasa Collections pruža metode za sortiranje elemenata tipa List.
Metoda klase Collections za sortiranje List elemenata
javna praznina sortiranja (popis popisa): Koristi se za sortiranje elemenata liste. Elementi popisa moraju biti tipa Comparable.
Napomena: klase String i Wrapper klase implementiraju sučelje Comparable prema zadanim postavkama. Dakle, ako pohranite objekte nizova ili klasa omotača na popis, skup ili mapu, to će prema zadanim postavkama biti Usporedivo.
Java usporedivi primjer
Pogledajmo primjer sučelja Comparable koje razvrstava elemente popisa na temelju dobi.
Datoteka: 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; } }
Datoteka: 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 Comparable Primjer: obrnutim redoslijedom
Pogledajmo isti primjer sučelja Comparable koje razvrstava elemente popisa na temelju starosti obrnutim redoslijedom.
Datoteka: 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