Os métodos de classificação predefinidos () devem classificar objetos predefinidos. E os objetos definidos pelo usuário? Java tem uma interface chamada comparável. Uma interface é um tipo de classe cujos métodos são declarações sem definições (corpos). Portanto, uma classe deve ser implementada a partir de uma interface para os métodos a serem definidos (dados órgãos). Na classe implementada, os objetos podem ser instanciados de um nome dado pelo programador.
Java tem uma classe comparável predefinida. Os métodos de classificação () em coleções e matrizes usam a classe comparável predefinida para classificar objetos predefinidos. No entanto, para classificar uma lista ou variedade de objetos definidos pelo usuário, o programador deve implementar (definir) uma classe comparável do usuário da interface comparável. Esta classe implementada (definida) do usuário permite a classificação de objetos definidos pelo usuário em uma lista ou matriz. Portanto, uma classe comparável predefinida permite a classificação de objetos predefinidos, enquanto uma classe comparável definida pelo usuário permite a classificação de objetos definidos pelo usuário. Objetos definidos pelo usuário não são literais; portanto, uma classe de objetos definidos pelo usuário precisa de sua própria implementação comparável definida pelo usuário.
Este artigo ilustra como escrever comparável em java.
Exemplo de classe definida pelo usuário
A classe definida pelo usuário realmente implementa a interface comparável. A interface comparável tem apenas um método, que é,
int compareto (t o)É definido (dado um corpo) para classificar ascendente ou definido para classificar. Ele retorna um número inteiro negativo, ou zero, ou um número inteiro positivo, pois seu objeto é menor que, igual ou maior que o objeto especificado.
Essa classe de interesse, implementada a partir da interface comparável, é a classe definida pelo usuário com agora um método comparado () definido. Esta não é uma classe completa definida pelo usuário, embora. Pode ter outros métodos e propriedades (campos) próprios, dependendo muito do programador. Os objetos instanciados desta classe implementada do usuário serão os objetos da lista ou matriz a serem classificados. Cada objeto tem o mesmo método compareto () na classificação, que controla a classificação.
Exemplo de classe
O código a seguir mostra uma classe definida pelo usuário para funcionários, dos quais objetos (funcionários) serão instanciados. Para que os objetos sejam classificados, o funcionário da classe implementa a interface comparável e define (dá a um corpo) o método compareto () como um método especial da classe.
Empregados de aula de implementos comparáveisNão há objeto real literal aqui. A intenção é ter que classificar os funcionários por idade, ascendendo. Isso também está comparando o funcionário por idade. E assim o compareto () deve ser definido. Esta definição é para classificar ascendente. Neste método, corpo (definição), idade e EMP.idade, consulte dois elementos diferentes na lista ou matriz. Age refere -se ao elemento antes do EMP.idade .
Um método main () adequado para isso é:
public static void main (string [] args)Leia o código. A saída é:
Christopher 30Classificado ascendente, por idade.
Classificar descendo
A definição de método compareto () acima é para ascender. Para fazer a classificação descendente, codificá -lo da seguinte forma:
public int compareto (funcionário EMP)Observe que < has not been changed. However, -1 returned has been changed to +1; and +1 returned has been changed to -1. With this, the output for the above specific list is:
Pedro 50Descendente classificada, por idade.
Comparável para a matriz
Uma classe comparável para uma matriz é a mesma que uma classe comparável para uma lista, conforme explicado acima. A classe é um programador implementado uma classe que implementa a interface comparável. Este programador implementou a classe também define o método compareto (), ascendente ou descendente. Os objetos instanciados desta classe se tornam os objetos para a matriz. O método comparado () definido controla sua classificação.
O método principal a seguir, classifica uma variedade da mesma dos funcionários acima, ascendendo:
Funcionário [] arr = novo funcionário [3];Observe que em vez de,
Coleções.classificar (Al);há,
Matrizes.classificar (arr);Desta vez, porque uma matriz não é realmente uma lista. A saída deve ser
Christopher 30ascendente, por idade. Isso está na condição de que o corpo do método compareto () seja:
public int compareto (funcionário EMP)Se o corpo fosse,
public int compareto (funcionário EMP)Então a matriz seria classificada descendente para resultar na saída:
Pedro 50Conclusão
A classe comparável predefinida permite a classificação de objetos predefinidos, enquanto a classe comparável definida pelo usuário permite a classificação de objetos definidos pelo usuário. Objetos definidos pelo usuário não são literais; portanto, uma classe de objetos definidos pelo usuário precisa de sua própria implementação comparável definida pelo usuário.
A classe de interesse, cujos objetos devem ser instantados, deve implementar a interface comparável. A interface comparável possui o método compareto (), que deve ser definido na classe para classificar ascendente ou descendente (reversa). É esse método que controla a classificação na lista ou matriz.
A mesma classe comparável para classificar uma lista pode ser usada para classificar uma matriz. A classe é um programador implementado uma classe que implementa a interface comparável. Este programador implementou a classe também define o método compareto (), ascendente ou descendente. Os objetos instanciados desta classe se tornam os objetos da matriz.