Java Comparable -liittymää käytetään käyttäjän määrittämän luokan objektien järjestämiseen. Tämä käyttöliittymä löytyy java.lang-paketista, ja se sisältää vain yhden menetelmän, jonka nimi on vertaa(Object). Se tarjoaa vain yhden lajittelusarjan, eli voit lajitella elementit vain yhden tietojäsenen perusteella. Se voi olla esimerkiksi rollno, nimi, ikä tai mikä tahansa muu.
vertaaTo(Object obj) -menetelmä
julkinen int vertaaTo(Objektiobjekti): Sitä käytetään nykyisen objektin vertaamiseen määritettyyn objektiin. Se palaa
- positiivinen kokonaisluku, jos nykyinen objekti on suurempi kuin määritetty objekti.
- negatiivinen kokonaisluku, jos nykyinen objekti on pienempi kuin määritetty objekti.
- nolla, jos nykyinen objekti on yhtä suuri kuin määritetty objekti.
Voimme lajitella elementit:
- Merkkijonoobjektit
- Wrapper-luokan objektit
- Käyttäjän määrittämät luokkaobjektit
Kokoelmat luokka
Kokoelmat luokka tarjoaa staattisia menetelmiä kokoelmien elementtien lajitteluun. Jos kokoelmaelementit ovat Set tai Map, voimme käyttää TreeSet tai TreeMap. Emme kuitenkaan voi lajitella Listan elementtejä. Kokoelmat-luokka tarjoaa menetelmiä List-tyyppisten elementtien elementtien lajitteluun.
Method of Collections -luokka List-elementtien lajitteluun
public void sort (List list): Sitä käytetään Listan elementtien lajitteluun. Luettelon elementtien on oltava tyyppiä Comparable.
Huomautus: Merkkijonoluokka ja Wrapper-luokat toteuttavat oletuksena Comparable-liittymän. Joten jos tallennat merkkijono- tai kääreluokkien objektit luetteloon, joukkoon tai karttaan, se on oletuksena Verrattavissa.
Java vertailukelpoinen esimerkki
Katsotaanpa esimerkkiä Vertailevasta käyttöliittymästä, joka lajittelee listan elementit iän perusteella.
Tiedosto: 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; } }
Tiedosto: 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 vertailukelpoinen esimerkki: käänteinen järjestys
Katsotaanpa samaa esimerkkiä Comparable-liittymästä, joka lajittelee listan elementit iän perusteella käänteisessä järjestyksessä.
Tiedosto: 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