O que é a interface do comparador em Java com exemplos?
A interface Comparator contém os métodos compare() e equals(). O primeiro método é utilizado para calcular dois objetos retornando um valor inteiro. O outro método é utilizado para computar dois objetos comparadores para igualdade.
Aqui estão diferentes exemplos de como usar a interface Comparator em Java:
Exemplo 1: classificar uma lista com base no comprimento
Neste exemplo, uma lista de strings é considerada e classificada com base em seu comprimento em vez de ordem alfabética:
importar java.util.ArrayList ;
importar java.util.Collections ;
importar java.util.Comparator ;
importar java.util.List ;
público aula Principal {
público estático vazio principal ( Corda [ ] argumentos ) {
Lista < Corda > lista = novo ArrayList <> ( ) ;
lista. adicionar ( 'John' ) ;
lista. adicionar ( 'Prumo' ) ;
lista. adicionar ( 'Alice' ) ;
Coleções . organizar ( lista ) ;
Sistema . fora . println ( lista ) ;
Coleções . organizar ( lista, novo StringLengthComparator ( ) ) ;
Sistema . fora . println ( lista ) ;
}
} // Uma classe é definida
aula StringLengthComparator implementos Comparador < Corda > {
público int comparar ( Corda s1, Corda s2 ) {
retornar inteiro . comparar ( s1. comprimento ( ) , s2. comprimento ( ) ) ;
}
}
A descrição do código acima é dada abaixo:
- Primeiro, crie uma classe Comparator personalizada chamada StringLengthComparator que implementa a interface Comparator
. - Ele substitui o método compare() para comparar o comprimento de duas strings.
- No final, passe uma instância para o método.sort() para classificar a lista usando nosso comparador personalizado.
Saída
A primeira saída é o resultado da classificação da lista usando a ordem natural, enquanto a segunda saída é o resultado da classificação da lista usando nosso comparador personalizado com base no comprimento de cada string.
Exemplo 2: Classificando objetos com base em um campo específico
Outro exemplo é conduzido para classificar objetos com base em um campo específico. A interface Comparator é utilizada para conseguir isso:
importar java.util.ArrayList ;importar java.util.Collections ;
importar java.util.Comparator ;
importar java.util.List ;
público aula Principal {
público estático vazio principal ( Corda [ ] argumentos ) {
Lista < Pessoa > pessoas = novo ArrayList <> ( ) ; // Atribui nome, idade e salários
pessoas. adicionar ( novo Pessoa ( 'Alice' , 25 , 50000 ) ) ;
pessoas. adicionar ( novo Pessoa ( 'Prumo' , 30 , 75000 ) ) ;
pessoas. adicionar ( novo Pessoa ( 'Charlie' , vinte , 40000 ) ) ;
Comparador < Pessoa > SalarioComparator = novo Comparador < Pessoa > ( ) {
// Classifica as pessoas com base no salário
público int comparar ( Pessoa p1, Pessoa p2 ) {
retornar inteiro . comparar ( p2. getSalary ( ) , p1. getSalary ( ) ) ;
}
} ;
Coleções . organizar ( pessoas, salarioComparator ) ; retornar classificar valores
// Imprime uma lista ordenada de pessoas
para ( pessoa pessoa : pessoas ) {
Sistema . fora . println ( pessoa ) ;
}
}
}
aula Pessoa { // Define nome, idade e salário
privado Corda nome ; // escopo dentro de uma classe
privado int idade ;
privado int salário ;
público Pessoa ( Corda nome, int idade, int salário ) {
esse . nome = nome ;
esse . idade = idade ;
esse . salário = salário ;
}
público Corda obterNome ( ) {
retornar nome ;
}
público int getAge ( ) {
retornar idade ;
}
público int getSalary ( ) {
retornar salário ;
}
público Corda para sequenciar ( ) {
retornar nome + ' (idade ' + idade + ', salário $' + salário + ')' ;
}
}
A descrição do código segue abaixo:
- Uma classe chamada “ Pessoa ” com três campos: “ nome ”, “ idade ', e ' salário ' é considerado.
- Depois disso, classifique uma coleção de objetos Person dependendo de seu salário em ordem decrescente.
Saída
A saída mostra que os salários foram classificados de acordo com a ordem decrescente.
Conclusão
Em Java, a interface Comparator é uma ferramenta poderosa que permite aos usuários classificar objetos com base em critérios personalizados. Ele substitui o método compare(), os usuários podem definir sua própria função de comparação e usá-la para classificar coleções de objetos de várias maneiras. Este artigo explicou a interface Comparator juntamente com exemplos práticos em Java.