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:
- Objetos de cadena
- Objetos de clase contenedora
- 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,'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