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 :
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();
    }
J'ai aussi essayé de faire en sorte que la méthode retourne la liste triée, et de faire liste = TriFouilleListe.trierFormes1(liste);
Mais le résultat est le même, ma liste ne change pas d'état :/

Merci d'avance