logo

Java összehasonlítható felület

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:

  1. String objektumok
  2. Burkolat osztály objektumai
  3. 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,&apos;Vijay&apos;,23)); al.add(new Student(106,&apos;Ajay&apos;,27)); al.add(new Student(105,&apos;Jai&apos;,21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+&apos; &apos;+st.name+&apos; &apos;+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