logo

Interfaz comparable a Java

La interfaz Java Comparable se utiliza para ordenar los objetos de la clase definida por el usuario. Esta interfaz se encuentra en el paquete java.lang y contiene solo un método llamado compareTo(Object). Proporciona una única secuencia de clasificación, es decir, puede ordenar los elementos basándose únicamente en un único miembro de datos. Por ejemplo, puede ser número de lista, nombre, edad o cualquier otra cosa.

método comparar con (objeto obj)

público int comparar con (objeto obj): Se utiliza para comparar el objeto actual con el objeto especificado. Vuelve

  • Entero positivo, si el objeto actual es mayor que el objeto especificado.
  • entero negativo, si el objeto actual es menor que el objeto especificado.
  • cero, si el objeto actual es igual al objeto especificado.

Podemos ordenar los elementos de:

  1. Objetos de cadena
  2. Objetos de clase contenedora
  3. Objetos de clase definidos por el usuario

Clase de colecciones

Colecciones La clase proporciona métodos estáticos para ordenar los elementos de las colecciones. Si los elementos de la colección son de Set o Map, podemos usar TreeSet o TreeMap. Sin embargo, no podemos ordenar los elementos de List. La clase Colecciones proporciona métodos para ordenar los elementos de tipo Lista.

Método de clase Colecciones para ordenar elementos de Lista

clasificación de vacío público (lista de lista): Se utiliza para ordenar los elementos de la Lista. Los elementos de la lista deben ser del tipo Comparable.

Nota: La clase String y las clases Wrapper implementan la interfaz Comparable de forma predeterminada. Entonces, si almacena los objetos de clases de cadena o contenedor en una lista, conjunto o mapa, será Comparable de forma predeterminada.


Ejemplo comparable de Java

Veamos el ejemplo de la interfaz Comparable que ordena los elementos de la lista según la edad.

Archivo: Estudiante.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; } } 

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

Ejemplo comparable de Java: orden inverso

Veamos el mismo ejemplo de la interfaz Comparable que ordena los elementos de la lista según la edad en orden inverso.

Archivo: Estudiante.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