O que é a interface do comparador em Java com exemplos?

O Que E A Interface Do Comparador Em Java Com Exemplos



Em Java, a interface Comparator é utilizada para definir uma função de comparação que pode ser usada para classificar uma coleção de objetos. Ele permite classificar objetos com base em critérios personalizados, em vez da comparação padrão com base na ordem natural. Possui vários aplicativos para personalizar funções de acordo com as necessidades. Este artigo explicará a interface do Comparator juntamente com vários exemplos em Java.

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.