logo

Interfície comparable de Java

La interfície Java Comparable s'utilitza per ordenar els objectes de la classe definida per l'usuari. Aquesta interfície es troba al paquet java.lang i només conté un mètode anomenat compareTo(Object). Proporciona només una seqüència d'ordenació única, és a dir, podeu ordenar els elements només a partir d'un sol membre de dades. Per exemple, pot ser rollno, nom, edat o qualsevol altra cosa.

Mètode compareTo(Object obj).

public int compareTo(Objecte objecte): S'utilitza per comparar l'objecte actual amb l'objecte especificat. Torna

  • nombre enter positiu, si l'objecte actual és més gran que l'objecte especificat.
  • nombre enter negatiu, si l'objecte actual és menor que l'objecte especificat.
  • zero, si l'objecte actual és igual a l'objecte especificat.

Podem ordenar els elements de:

  1. Objectes de cadena
  2. Objectes de classe wrapper
  3. Objectes de classe definits per l'usuari

Classe de col·leccions

Col·leccions class proporciona mètodes estàtics per ordenar els elements de les col·leccions. Si els elements de la col·lecció són de Set o Map, podem utilitzar TreeSet o TreeMap. Tanmateix, no podem ordenar els elements de List. La classe Col·leccions proporciona mètodes per ordenar els elements dels elements de tipus Llista.

Mètode de la classe Col·leccions per ordenar els elements de la llista

public void sort (llista de llista): S'utilitza per ordenar els elements de List. Els elements de la llista han de ser del tipus Comparable.

Nota: les classes String i Wrapper implementen la interfície Comparable de manera predeterminada. Per tant, si emmagatzemeu els objectes de les classes de cadena o embolcall en una llista, conjunt o mapa, serà Comparable per defecte.


Exemple comparable de Java

Vegem l'exemple de la interfície Comparable que ordena els elements de la llista en funció de l'edat.

Fitxer: 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; } } 

Fitxer: 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 

Exemple comparable de Java: ordre invers

Vegem el mateix exemple de la interfície Comparable que ordena els elements de la llista en funció de l'edat en ordre invers.

Fitxer: 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