Interfaz del comparador Java se utiliza para ordenar los objetos de una clase definida por el usuario.
Esta interfaz se encuentra en el paquete java.util y contiene 2 métodos comparar (Objeto obj1, Objeto obj2) y igual (elemento Objeto).
Proporciona múltiples secuencias de clasificación, es decir, puede ordenar los elementos según cualquier miembro de datos, por ejemplo, número de lista, nombre, edad o cualquier otra cosa.
Métodos de la interfaz del comparador Java
Método | Descripción |
---|---|
comparación int pública (Objeto obj1, Objeto obj2) | Compara el primer objeto con el segundo objeto. |
público booleano es igual (Objeto obj) | Se utiliza para comparar el objeto actual con el objeto especificado. |
público booleano es igual (Objeto obj) | Se utiliza para comparar el objeto actual con el objeto especificado. |
Método | Descripción |
---|---|
int comparar(T o1, T o2) | Compara el primer objeto con el segundo objeto. |
estático | Acepta una función que extrae una clave de clasificación Comparable de un tipo T y devuelve un Comparador que compara según esa clave de clasificación. |
Comparador estático comparando (Extractor de teclas de función, Comparador de teclas de comparación) | Acepta una función que extrae una clave de clasificación de un tipo T y devuelve un Comparador que compara mediante esa clave de clasificación utilizando el Comparador especificado. |
Comparador estático comparandoDoble(ToDoubleFunction keyExtractor) | Acepta una función que extrae una clave de clasificación doble de un tipo T y devuelve un Comparador que compara según esa clave de clasificación. |
Comparador estático comparandoInt(ToIntFunction keyExtractor) | Acepta una función que extrae una clave de clasificación int de un tipo T y devuelve un Comparador que compara según esa clave de clasificación. |
Comparador estático comparandoLong(ToLongFunction keyExtractor) | Acepta una función que extrae una clave de clasificación larga de un tipo T y devuelve un Comparador que compara según esa clave de clasificación. |
booleano es igual (Objeto obj) | Se utiliza para comparar el objeto actual con el objeto especificado. |
estático | Devuelve un comparador que compara objetos comparables en orden natural. |
Comparador estático nullsFirst(Comparador comparador) | Devuelve un comparador que trata los elementos nulos como menores que los elementos no nulos. |
Comparador estático nullsLast(Comparador comparador) | Devuelve un comparador que trata a los elementos nulos como mayores que los elementos no nulos. |
Comparador predeterminado invertido() | Devuelve un comparador que contiene el orden inverso del comparador proporcionado. |
estático | Devuelve un comparador que contiene el orden inverso al natural. |
Comparador predeterminado y luego Comparar (Comparador otro) | Devuelve un comparador de orden lexicográfico con otro comparador. |
por defectoComparador y luego Comparar(Tecla de funciónExtractor) | Devuelve un comparador de orden lexicográfico con una función que extrae una clave de clasificación comparable. |
Comparador predeterminado y luego Comparar (Extractor de teclas de función, Comparador de teclas de comparación) | Devuelve un comparador de orden lexicográfico con una función que extrae una clave para compararla con el Comparador dado. |
Comparador predeterminado y luego ComparandoDoble(ToDoubleFunction keyExtractor) | Devuelve un comparador de orden lexicográfico con una función que extrae una clave de clasificación doble. |
Comparador predeterminado y luego CompararInt(ToIntFunction keyExtractor) | Devuelve un comparador de orden lexicográfico con una función que extrae una clave de clasificación int. |
Comparador predeterminado y luego ComparandoLong(ToLongFunction keyExtractor) | Devuelve un comparador de orden lexicográfico con una función que extrae una clave de clasificación larga. |
Ejemplo de comparador de Java 8
Veamos el ejemplo de ordenar los elementos de Lista según la edad y el nombre.
Archivo: Estudiante.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
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)); //Sorting elements on the basis of name Comparator cm1=Comparator.comparing(Student::getName); Collections.sort(al,cm1); System.out.println('Sorting by Name'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } //Sorting elements on the basis of age Comparator cm2=Comparator.comparing(Student::getAge); Collections.sort(al,cm2); System.out.println('Sorting by Age'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Sorting by Name 106 Ajay 27 105 Jai 21 101 Vijay 23 Sorting by Age 105 Jai 21 101 Vijay 23 106 Ajay 27
Ejemplo de comparador de Java 8: método nullsFirst() y nullsLast()
Aquí, ordenamos la lista de elementos que también contiene nulo.
Archivo: Estudiante.java
class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } public int getRollno() { return rollno; } public void setRollno(int rollno) { this.rollno = rollno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Archivo: TestSort2.java
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,null,21)); Comparator cm1=Comparator.comparing(Student::getName,Comparator.nullsFirst(String::compareTo)); Collections.sort(al,cm1); System.out.println('Considers null to be less than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } Comparator cm2=Comparator.comparing(Student::getName,Comparator.nullsLast(String::compareTo)); Collections.sort(al,cm2); System.out.println('Considers null to be greater than non-null'); for(Student st: al){ System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Considers null to be less than non-null 105 null 21 106 Ajay 27 101 Vijay 23 Considers null to be greater than non-null 106 Ajay 27 101 Vijay 23 105 null 21