„Java Comparable“ sąsaja naudojama vartotojo apibrėžtos klasės objektams rūšiuoti. Ši sąsaja yra java.lang pakete ir joje yra tik vienas metodas, pavadintas palygintiTo(Object). Jame pateikiama tik viena rūšiavimo seka, t. y. galite rūšiuoti elementus tik pagal vieną duomenų narį. Pavyzdžiui, tai gali būti rollno, vardas, amžius ar dar kas nors.
palyginimasTo(Object obj) metodas
viešas palyginimas su(Objekto objektas): Jis naudojamas dabartiniam objektui palyginti su nurodytu objektu. Tai grįžta
- teigiamas sveikasis skaičius, jei dabartinis objektas yra didesnis nei nurodytas objektas.
- neigiamas sveikasis skaičius, jei dabartinis objektas yra mažesnis už nurodytą objektą.
- nulis, jei dabartinis objektas yra lygus nurodytam objektui.
Mes galime rūšiuoti elementus iš:
modemas vs maršrutizatorius
- Styginių objektai
- Apvyniojimo klasės objektai
- Vartotojo apibrėžti klasės objektai
Kolekcijos klasė
Kolekcijos klasėje pateikiami statiniai kolekcijų elementų rūšiavimo metodai. Jei rinkinio elementai yra Set arba Map, galime naudoti TreeSet arba TreeMap. Tačiau negalime rūšiuoti sąrašo elementų. Kolekcijų klasėje pateikiami sąrašo tipo elementų elementų rūšiavimo metodai.
Sąrašo elementų rūšiavimo klasės rinkinių metodas
viešas tuščias rūšiavimas (sąrašo sąrašas): Jis naudojamas sąrašo elementams rūšiuoti. Sąrašo elementai turi būti palyginamo tipo.
dvejetainių medžių rūšys
Pastaba: eilutės klasė ir įvyniojimo klasės pagal numatytuosius nustatymus įgyvendina palyginamąją sąsają. Taigi, jei išsaugosite eilučių ar įpakavimo klasių objektus sąraše, rinkinyje ar žemėlapyje, pagal numatytuosius nustatymus jis bus palyginamas.
Palyginamas Java pavyzdys
Pažiūrėkime į palyginimo sąsajos, kuri rūšiuoja sąrašo elementus pagal amžių, pavyzdį.
Failas: 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; } }
Failas: 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
Palyginamas Java pavyzdys: atvirkštinė tvarka
Pažiūrėkime tą patį palyginimo sąsajos pavyzdį, kuriame sąrašo elementai rūšiuojami pagal amžių atvirkštine tvarka.
css komentaras
Failas: 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