Vmesnik Java Comparable se uporablja za razvrščanje objektov uporabniško definiranega razreda. Ta vmesnik je v paketu java.lang in vsebuje samo eno metodo z imenom compareTo(Object). Zagotavlja samo eno zaporedje razvrščanja, kar pomeni, da lahko elemente razvrstite samo na podlagi enega samega podatkovnega člana. Na primer, lahko je rollno, ime, starost ali karkoli drugega.
metoda compareTo(Object obj).
public int compareTo(Object obj): Uporablja se za primerjavo trenutnega predmeta z navedenim objektom. Vrača se
- pozitivno celo število, če je trenutni objekt večji od podanega objekta.
- negativno celo število, če je trenutni objekt manjši od podanega objekta.
- nič, če je trenutni objekt enak podanemu objektu.
Lahko razvrstimo elemente:
- Objekti nizov
- Objekti razreda ovojnice
- Uporabniško definirani objekti razreda
Razred zbirk
Zbirke ponuja statične metode za razvrščanje elementov zbirk. Če so elementi zbirke Set ali Map, lahko uporabimo TreeSet ali TreeMap. Vendar elementov seznama ne moremo razvrstiti. Razred Zbirke nudi metode za razvrščanje elementov elementov tipa Seznam.
Metoda razreda Collections za razvrščanje elementov seznama
javna neveljavna razvrstitev (seznam seznama): Uporablja se za razvrščanje elementov seznama. Elementi seznama morajo biti tipa Primerljivo.
Opomba: Razred nizov in razredi Wrapper privzeto izvajajo vmesnik Comparable. Torej, če shranite objekte nizov ali razredov ovoja na seznam, nabor ali zemljevid, bo privzeto primerljiv.
Java primerljiv primer
Oglejmo si primer vmesnika Comparable, ki razvršča elemente seznama na podlagi starosti.
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 primerljiv primer: obratni vrstni red
Oglejmo si isti primer vmesnika Comparable, ki razvršča elemente seznama na podlagi starosti v obratnem vrstnem redu.
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