Bonjour j'ai une classe java qui contient un champ long. Elle implemente l'interface Comparable et ma methode compareTo compare les champs long por trier mes objets. Mais l'appelle à Arrays.sort(mon tableau d'objet); ne marche pas? pourquoi?
Bonjour j'ai une classe java qui contient un champ long. Elle implemente l'interface Comparable et ma methode compareTo compare les champs long por trier mes objets. Mais l'appelle à Arrays.sort(mon tableau d'objet); ne marche pas? pourquoi?
Tu renvoies bien la bonne valeur dans ton compareTo() ? (Lis la JavaDoc si tu as un doûte)
Toine
mon extrait de code cé ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public class Strip extends JPanel implements Comparable{ private Component canvas; public String monVol; public long POBTnum; public long EDATnum; /** Creates a new instance of Strip */ public Strip(Component c,String s,int i) { /*bla bla bla*/ } (....) public int compareTo(Object o) { Strip other = (Strip) o; if(POBTnum<other.POBTnum) return 1; if(POBTnum>other.POBTnum) return -1; return 0; } }
et je l'utilise comme ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 maZone.lesStrips.add(strip);//ma zone.lesStrips est une ArrayList contenant des objet Strip Strip[] mesStrips = new Strip[maZone.lesStrips.size()]; maZone.lesStrips.toArray(mesStrips); Arrays.sort(mesStrips);
Mais ca marche pas
si ton objet est "plus petit" que celui qu'on te passe en paramètre, tu dois renvoyer une valeur négative par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
Toine
Quand tu dis que ca marche pas, ca veut dire quoi exactement ?:
- pas trié comme tu veux
pas trié du tout
erreur générée à l'execution
Ben mets déjà un System.out.println dans ta methode compareTo pour voir si elle est bien appelée.
EDIT: en effet, il semble que tu ai inversé le 1 et le -1
Parfois, Google fait des miracles
C'est normal que ça ne marche pas, ton code est incorrect.
Toine
salut
En quoi mon code est incorrect ?
Est ce que je peux avoir plusieurs methode compareTo dans ma classe???
Envoyé par duj
Parfois, Google fait des miracles
OK ca marche
est ce que je peux avoir plusieurs methode de comparateTo dans une meme classe
non
pourquoi faire?
bin non, l'interface Comparable ne requiert qu'une seule méthode, qui a le prototype public void compareTo(Object)...Envoyé par feti2004
"Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"
Confucius, 448 av. J-C
Si tu as besoin de trier différement selon certain cas, tu peux utiliser la méthode Arrays.sort(Object[], Comparator)
Toine
Envoyé par onlytoine
Justement comment tu utilises cela? tu as un exemple simple?
tu passes ton tableau à l'objet et tu lui passes aussi un Comparator qui permettra le tri :
C'est plus clair ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Arrays.sort( monTableau, new Comparator() { public int compare(Object o1, Object o2) { // ....... } } );
Toine
Cé on ne peut plus clairEnvoyé par onlytoine
Je te remercie ca ma sauvé
Ok, c'est parfait alors !
Bonne continuation !
Toine
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager