Tri d'un vecteur [Java] - Java - Programmation
Marsh Posté le 13-11-2003 à 19:18:36
bha non, c'est normal de faire comme ca ...
Tu peux aussi faire que ton objet Candidat soit "ordonné" en le faisant implémenter Comparable et dans ce cas il faut que tu implémente également equals pour que quand equals() est vrai, compareTo() retourne 0
Marsh Posté le 14-11-2003 à 00:40:58
voila c fait
mais jai pas eu besoin dimplementer equals vu que je compare juste le nom
Code :
|
c bon comme ca ?
Marsh Posté le 14-11-2003 à 00:45:28
si tu déclares pas le equals, tu casses la logique de ton objet => rien n'est garantit de fonctionner.
Rendre un objet Comparable c'ets pas quelque chose d'innocent : ca veut dire que ton objet a un "ordre naturel", comme les Integer ou les String (ordre alphabétique). C'est plutot rare ...
Dans la plupart des cas, c'est bien mieux de fournir des Comparator à côté des objets (en tant que classe public static par exemple ...)
Marsh Posté le 14-11-2003 à 00:59:43
ce que je ne comprends pas c que ca marche et que la methode equals nest pas appelée... j'ai mit un system.out dedans
sinon par ordre naturel tu veux dire que en prenant toutes les donnees membres de mon objet on pourrait le classer ??
voila ce que candidat contient
Code :
|
Marsh Posté le 14-11-2003 à 01:03:14
Ce que je dis c'est que la plupart des objets ne devraient pas implémenter Comparabale, parce que pour la plupart, la façon dont ils sont triables dépend de l'utilisation qu'on veut en faire.
Et tu fais comme tu veux pour le equals, mais t'étonne pas si un de ces quatres, t'as des problèmes en utilisant ton objet avec les classes java.utils ...
Marsh Posté le 14-11-2003 à 01:09:12
benou a écrit : Ce que je dis c'est que la plupart des objets ne devraient pas implémenter Comparabale, parce que pour la plupart, la façon dont ils sont triables dépend de l'utilisation qu'on veut en faire. |
ok merci jai compris maintenant
Marsh Posté le 14-11-2003 à 01:19:29
benou a écrit : Ce que je dis c'est que la plupart des objets ne devraient pas implémenter Comparabale, parce que pour la plupart, la façon dont ils sont triables dépend de l'utilisation qu'on veut en faire. |
en l'occurence pour comparable il en a pas besoin vu qu'il delegue à compareTo de String
par contre, de fait, ça ne garantit pas l'ordre si deux Candidats on le meme nom
Marsh Posté le 14-11-2003 à 01:24:20
the real moins moins a écrit : en l'occurence pour comparable il en a pas besoin vu qu'il delegue à compareTo de String |
hein ?
besoin pour quoi ???
et pkoi l'ordre marcherait ps avec des noms identiques ?
Marsh Posté le 14-11-2003 à 01:32:11
il marcherait mais serait pas garanti; pas tout le temps le meme quoi
(de meme que l'ordre de deux Strings "pouet" et "pouet" peut varier. bon, nom vu le cas special de la classe String et du cache machin chouette mais bon )
Marsh Posté le 14-11-2003 à 01:42:19
the real moins moins a écrit : il marcherait mais serait pas garanti; pas tout le temps le meme quoi |
sinon a part la philosophie des 2 methodes leur utilisation est pratiquement identique c bizarre tout de meme
Marsh Posté le 14-11-2003 à 01:44:34
ben, non. comme t'as dis benou, dans un cas (comparable), tu veux donner un ordre "naturel" à tes objets (ie, pas besoin de faire un sort explicite pour les triers, si tu utilises un SortedSet par exemple), dans l'autre tu peux avoir differents Comparator (un pour le nom du Candidat, l'autre pour son score), et les utiliser quand tu as besoin d'explicitement trier tes données pour un usage particulier
Marsh Posté le 13-11-2003 à 19:16:01
je fait comme ceci pour trier mon vecteur :
ca marche tres bien,mais je c il y a une 2e methode avec un equals pour trier
qqn a une idee ?
Message édité par red faction le 13-11-2003 à 19:17:57