Les méthodes prédéfinies Sort () sont de trier les objets prédéfinis. Qu'en est-il des objets définis par l'utilisateur? Java a une interface appelée comparable. Une interface est une sorte de classe dont les méthodes sont des déclarations sans définitions (corps). Ainsi, une classe doit être implémentée à partir d'une interface pour la définition des méthodes (donnant des corps). À partir de la classe implémentée, les objets peuvent être instanciés à partir d'un nom donné par le programmeur.
Java a une classe comparable prédéfinie. Les méthodes tri () dans les collections et les tableaux utilisent la classe comparable prédéfinie pour trier les objets prédéfinis. Cependant, afin de trier une liste ou une table d'objets définis par l'utilisateur, le programmeur doit implémenter (définir) une classe comparable utilisateur à partir de l'interface comparable. Cette classe (définie) implémentée (définie) permet le tri d'objets définis par l'utilisateur dans une liste ou un tableau. Ainsi, une classe comparable prédéfinie permet le tri des objets prédéfinis, tandis qu'une classe comparable définie par l'utilisateur permet le tri des objets définis par l'utilisateur. Les objets définis par l'utilisateur ne sont pas des littéraux, donc une classe d'objets définis par l'utilisateur a besoin de sa propre implémentation comparable définie par l'utilisateur.
Cet article illustre comment écrire comparable en java.
Exemple de classe définie par l'utilisateur
La classe définie par l'utilisateur implémente réellement l'interface comparable. L'interface comparable n'a qu'une seule méthode, qui est,
int compareto (t o)Il est défini (étant donné un corps) à trier ascendant ou défini pour trier descendant. Il renvoie un entier négatif, ou zéro, ou un entier positif, car son objet est inférieur, égal ou supérieur à l'objet spécifié.
Cette classe d'intérêt, implémentée à partir de l'interface comparable, est la classe définie par l'utilisateur avec maintenant une méthode de comparaison définie (). Ce n'est pas une classe complète définie par l'utilisateur, cependant. Il peut avoir d'autres méthodes et propriétés (champs) qui lui sont propres, selon le programmeur. Les objets instanciés de cette classe implémentée par l'utilisateur seront les objets de la liste ou du tableau à tri. Chaque objet a la même méthode compareto () dans le tri, qui contrôle le tri.
Exemple de classe
Le code suivant montre une classe définie par l'utilisateur pour les employés, à partir de laquelle les objets (employés) seront instanciés. Pour que les objets soient triés, l'employé de classe met en œuvre une interface comparable et définit (donne un corps) la méthode compareto () comme une méthode spéciale de la classe.
L'employé de classe implémente comparableIl n'y a pas de véritable objet littéral ici. L'intention est de devoir trier les employés par âge, en montant. Cela compare également l'employé par âge. Et donc la comparaison () doit être définie. Cette définition est pour le tri. Dans cette méthode, le corps (définition), l'âge et l'EMP.âge, reportez-vous à deux éléments différents de la liste ou du tableau. L'âge fait référence à l'élément avant EMP.âge .
Une méthode Main () appropriée pour cela est:
public static void main (String [] args)Lisez le code. La sortie est:
Christopher 30trié ascendant, par âge.
Tri descendant
La définition de la méthode comparative () ci-dessus est pour ascendant. Pour le faire trier descendant, codez-le comme suit:
public int compareto (employé EMP)Noter 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:
Pierre 50trié descendant, par âge.
Comparable pour le tableau
Une classe comparable pour un tableau est la même qu'une classe comparable pour une liste, comme expliqué ci-dessus. La classe est un programmeur implémenté une classe qui implémente l'interface comparable. Cette classe implémentée par programme. Les objets instanciés de cette classe deviennent les objets du tableau. La méthode de comparaison définie contrôle leur tri.
La méthode principale suivante, trie un tableau des mêmes employés ci-dessus, ascendant:
Employé [] Arr = nouvel employé [3];Notez qu'au lieu de,
Collections.tri (al);il y a,
Tableaux.tri (arr);Cette fois, car un tableau n'est pas vraiment une liste. La sortie doit être
Christopher 30ascendant, par âge. C'est à la condition que le corps de la méthode compareto () est:
public int compareto (employé EMP)Si le corps était,
public int compareto (employé EMP)Ensuite, le tableau serait trié descendant pour entraîner la sortie:
Pierre 50Conclusion
La classe comparable prédéfinie permet le tri d'objets prédéfinis, tandis que la classe comparable définie par l'utilisateur permet le tri d'objets définis par l'utilisateur. Les objets définis par l'utilisateur ne sont pas des littéraux, donc une classe d'objets définis par l'utilisateur a besoin de sa propre implémentation comparable définie par l'utilisateur.
La classe d'intérêt, dont les objets doivent être instanciés, doit implémenter l'interface comparable. L'interface comparable a la méthode compareto (), qui doit être définie dans la classe pour le tri ascendant ou descendant (inverse). C'est cette méthode qui contrôle le tri dans la liste ou le tableau.
La même classe comparable pour trier une liste peut être utilisée pour trier un tableau. La classe est un programmeur implémenté une classe qui implémente l'interface comparable. Cette classe implémentée par programme. Les objets instanciés de cette classe deviennent les objets du tableau.