Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1188 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Tri d'un vecteur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Tri d'un vecteur

n°566061
red factio​n
Posté le 13-11-2003 à 19:16:01  profilanswer
 

je fait comme ceci pour trier mon vecteur :

Code :
  1. class Compar implements Comparator {
  2.         public int compare(Object x, Object y) {
  3.              Candidat c1=(Candidat)x;
  4.              Candidat c2=(Candidat)y;
  5.              return c2.getVal() - c1.getVal();
  6.         }
  7.    }
  8.       Collections.sort(v, new Compar());


 
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
mood
Publicité
Posté le 13-11-2003 à 19:16:01  profilanswer
 

n°566063
benou
Posté le 13-11-2003 à 19:18:36  profilanswer
 

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


---------------
ma vie, mon oeuvre - HomePlayer
n°566375
red factio​n
Posté le 14-11-2003 à 00:40:58  profilanswer
 

voila c fait  
 
mais jai pas eu besoin dimplementer equals vu que je compare juste le nom  
 
 

Code :
  1. public int compareTo(Object o){
  2.       Candidat c = (Candidat)o;
  3.       return name.compareTo(c.name);
  4. Collections.sort(v);
  5.    }


 
c bon comme ca ?


Message édité par red faction le 14-11-2003 à 00:41:31
n°566378
benou
Posté le 14-11-2003 à 00:45:28  profilanswer
 

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 ...)


---------------
ma vie, mon oeuvre - HomePlayer
n°566381
red factio​n
Posté le 14-11-2003 à 00:59:43  profilanswer
 

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 :
  1. private int score=0;              // nombre de votes
  2.    private Vector v=new Vector();    // contient les noms des personne qui ont vote pour se candidat
  3.    private String name=new String(); // nom du candidat


 
 

n°566384
benou
Posté le 14-11-2003 à 01:03:14  profilanswer
 

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 ...


---------------
ma vie, mon oeuvre - HomePlayer
n°566389
red factio​n
Posté le 14-11-2003 à 01:09:12  profilanswer
 

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.
 
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 ...  


 
ok merci jai compris maintenant

n°566394
the real m​oins moins
Posté le 14-11-2003 à 01:19:29  profilanswer
 

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.
 
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 ...  

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 ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°566396
benou
Posté le 14-11-2003 à 01:24:20  profilanswer
 

the real moins moins a écrit :

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 ;)


hein ?
besoin pour quoi ???
 
et pkoi l'ordre marcherait ps avec des noms identiques ?


---------------
ma vie, mon oeuvre - HomePlayer
n°566397
the real m​oins moins
Posté le 14-11-2003 à 01:32:11  profilanswer
 

il marcherait mais serait pas garanti; pas tout le temps le meme quoi [:spamafote]
(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 :o)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 14-11-2003 à 01:32:11  profilanswer
 

n°566398
red factio​n
Posté le 14-11-2003 à 01:42:19  profilanswer
 

the real moins moins a écrit :

il marcherait mais serait pas garanti; pas tout le temps le meme quoi [:spamafote]
(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 :o)


 
sinon a part la philosophie des 2 methodes leur utilisation est pratiquement identique c bizarre tout de meme

n°566399
the real m​oins moins
Posté le 14-11-2003 à 01:44:34  profilanswer
 

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


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Tri d'un vecteur

 

Sujets relatifs
[Java] [DEFI] Voir les partie de quake en cours....[JAVA] Packager un jar contenant des jars utilisant des jars , etc ...
aidez-moi à faire mon devoir de Java svp..... please !!![Java] Problème avec JPopupMenu [résolu]
[Java]Appeler une méthode d'une classe à partir d'1 String [Résolu][Java] URL de la page des ressources pour faire du GUI
[Java-Swing] Auto positionnement d'un JScrollPane[JAVA] Un bon tutorial sur GridBaglayout
[JAVA] Comment récupérer l'année en cours dans une variable ?[java] ouvrir un document
Plus de sujets relatifs à : [Java] Tri d'un vecteur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR