Bonjour,
J'ai un problème avec une méthode statique qui me permet de trier une liste chainée ( implémentée par moi même, et non de l'API collection ).
Ce qui se passe, c'est que dans ma liste, j'ai une méthode qui s'appelle par exemple trierParFormes1(), dans cette méthode, j'appelle une méthode statique d'une de mes classes outils qui me sert à trier les listes, donc l'appel se fait comme ceci : TriFouilleListe.trierFormes1(this);
Une fois à l’intérieur, je suis l'évolution du tri avec le debugger, la liste est bien triée, mais une fois que ça sort de la méthode, ma liste ( this ) redevient à son état initial. Je suis bloqué sur ça depuis plus d'une journée et je n'arrive pas à trouver une solution logique vu que mon algo de tri fonctionne.
Exemple de code :
J'ai aussi essayé de faire en sorte que la méthode retourne la liste triée, et de faire liste = TriFouilleListe.trierFormes1(liste);
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public static void trierFormes2(Liste liste){ //Travailler avec un clone de la liste pour ne pas interferer avec l'affichage Liste listeClone = new Liste(); listeClone = liste.clone(); //Liste triée Liste listeTriee = new Liste(); listeTriee.dernier(); //Recherche des carrés listeClone.premier(); for(int i=0; i<listeClone.getTaille(); i++){ AbstractForme forme = (AbstractForme) listeClone.getElement(); if(forme.toString().equals(Carre.NOM)){ listeTriee.insererFin(forme); } listeClone.suivant(); } //Recherche des rectangles listeClone.premier(); for(int i=0; i<listeClone.getTaille(); i++){ AbstractForme forme = (AbstractForme) listeClone.getElement(); if(forme.toString().equals(Rectangle.NOM)){ listeTriee.insererFin(forme); } listeClone.suivant(); } //Recherche des cercles listeClone.premier(); for(int i=0; i<listeClone.getTaille(); i++){ AbstractForme forme = (AbstractForme) listeClone.getElement(); if(forme.toString().equals(Cercle.NOM)){ listeTriee.insererFin(forme); } listeClone.suivant(); } //Recherche des ovales listeClone.premier(); for(int i=0; i<listeClone.getTaille(); i++){ AbstractForme forme = (AbstractForme) listeClone.getElement(); if(forme.toString().equals(Ovale.NOM)){ listeTriee.insererFin(forme); } listeClone.suivant(); } //Recherche des lignes listeClone.premier(); for(int i=0; i<listeClone.getTaille(); i++){ AbstractForme forme = (AbstractForme) listeClone.getElement(); if(forme.toString().equals(DemiDroite.NOM)){ listeTriee.insererFin(forme); } listeClone.suivant(); } liste = listeTriee.clone(); }
Mais le résultat est le même, ma liste ne change pas d'état :/
Merci d'avance
Partager