Interface do comparador Java é usado para ordenar os objetos de uma classe definida pelo usuário.
Esta interface é encontrada no pacote java.util e contém 2 métodos compare(Object obj1,Object obj2) e equals(Object element).
Ele fornece múltiplas sequências de classificação, ou seja, você pode classificar os elementos com base em qualquer membro de dados, por exemplo, rollno, nome, idade ou qualquer outra coisa.
Métodos de interface do comparador Java
Método | Descrição |
---|---|
público int comparar (Objeto obj1, Objeto obj2) | Ele compara o primeiro objeto com o segundo objeto. |
booleano público é igual (objeto objeto) | É usado para comparar o objeto atual com o objeto especificado. |
booleano público é igual (objeto objeto) | É usado para comparar o objeto atual com o objeto especificado. |
Método | Descrição |
---|---|
int comparar(T o1, T o2) | Ele compara o primeiro objeto com o segundo objeto. |
estático | Ele aceita uma função que extrai uma chave de classificação comparável de um tipo T e retorna um comparador que compara por essa chave de classificação. |
comparação estática do comparador (função keyExtractor, comparador keyComparator) | Ele aceita uma função que extrai uma chave de classificação de um tipo T e retorna um Comparador que compara por essa chave de classificação usando o Comparador especificado. |
Comparador estático comparandoDouble (ToDoubleFunction keyExtractor) | Ele aceita uma função que extrai uma chave de classificação dupla de um tipo T e retorna um Comparador que compara por essa chave de classificação. |
Comparador estático comparandoInt (ToIntFunction keyExtractor) | Ele aceita uma função que extrai uma chave de classificação int de um tipo T e retorna um Comparador que compara por essa chave de classificação. |
Comparador estático comparandoLong (ToLongFunction keyExtractor) | Ele aceita uma função que extrai uma chave de classificação longa de um tipo T e retorna um Comparador que compara por essa chave de classificação. |
booleano é igual (objeto obj) | É usado para comparar o objeto atual com o objeto especificado. |
estático | Ele retorna um comparador que compara objetos comparáveis em ordem natural. |
Comparador estático nullsFirst (Comparador comparador) | Ele retorna um comparador que trata nulo como sendo menor que elementos não nulos. |
Comparador estático nullsLast (Comparador comparador) | Ele retorna um comparador que trata nulo como maior que elementos não nulos. |
Comparador padrão invertido() | Ele retorna um comparador que contém a ordem inversa do comparador fornecido. |
estático | Ele retorna um comparador que contém o reverso da ordem natural. |
Comparador padrão entãoComparando(Comparador outro) | Retorna um comparador de ordem lexicográfica com outro comparador. |
padrãoComparador entãoComparando(tecla de funçãoExtrator) | Ele retorna um comparador de ordem lexicográfica com uma função que extrai uma chave de classificação Comparable. |
Comparador padrão thenComparing(Function keyExtractor, Comparator keyComparator) | Retorna um comparador de ordem lexicográfica com uma função que extrai uma chave para ser comparada com o Comparador fornecido. |
Comparador padrão thenComparingDouble (ToDoubleFunction keyExtractor) | Ele retorna um comparador de ordem lexicográfica com uma função que extrai uma chave de classificação dupla. |
Comparador padrão thenComparingInt (ToIntFunction keyExtractor) | Ele retorna um comparador de ordem lexicográfica com uma função que extrai uma chave de classificação int. |
Comparador padrão thenComparingLong (ToLongFunction keyExtractor) | Ele retorna um comparador de ordem lexicográfica com uma função que extrai uma chave de classificação longa. |
Exemplo de comparador Java 8
Vejamos o exemplo de classificação dos elementos da Lista com base na idade e no nome.
Arquivo: Aluno.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; } }
Arquivo: 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
Exemplo de comparador Java 8: métodos nullsFirst() e nullsLast()
Aqui, classificamos a lista de elementos que também contém nulo.
Arquivo: Aluno.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; } }
Arquivo: 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