A Java Comparable felület a felhasználó által definiált osztály objektumainak rendezésére szolgál. Ez az interfész a java.lang csomagban található, és csak egy összehasonlító(Object) nevű metódust tartalmaz. Csak egyetlen rendezési sorrendet biztosít, azaz csak egyetlen adattag alapján rendezheti az elemeket. Például lehet rollno, név, életkor vagy bármi más.
mutató a c
Összehasonlítás(Object obj) metódus
nyilvános int Összehasonlításhoz(Object Obj): Az aktuális objektum és a megadott objektum összehasonlítására szolgál. Visszatér
- pozitív egész szám, ha az aktuális objektum nagyobb, mint a megadott objektum.
- negatív egész szám, ha az aktuális objektum kisebb, mint a megadott objektum.
- nulla, ha az aktuális objektum egyenlő a megadott objektummal.
A következő elemeket rendezhetjük:
- String objektumok
- Burkolat osztály objektumai
- Felhasználó által definiált osztályobjektumok
Gyűjtemények osztály
Gyűjtemények osztály statikus módszereket biztosít a gyűjtemények elemeinek rendezésére. Ha a gyűjtemény elemei Set vagy Map elemek, használhatjuk a TreeSet vagy a TreeMap alkalmazást. A Lista elemeit azonban nem tudjuk rendezni. A Collections osztály módszereket biztosít a Lista típusú elemek elemeinek rendezésére.
A Collections osztály módszere a listaelemek rendezésére
public void rendezés (Lista lista): A Lista elemeinek rendezésére szolgál. A listaelemeknek Összehasonlítható típusúnak kell lenniük.
Megjegyzés: A String osztály és a Wrapper osztályok alapértelmezés szerint a Comparable felületet valósítják meg. Tehát ha a string vagy wrapper osztályok objektumait listában, halmazban vagy leképezésben tárolja, akkor alapértelmezés szerint Összehasonlítható lesz.
Java összehasonlítható példa
Lássuk a Comparable felület példáját, amely életkor alapján rendezi a listaelemeket.
Fájl: 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; } }
Fájl: 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 összehasonlítható példa: fordított sorrend
Lássuk ugyanazt a példát a Comparable felületre, amely fordított sorrendben rendezi a listaelemeket életkor alapján.
Fájl: 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