Trier un tableau d'objets

Fermé
sihem hcine Messages postés 113 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 7 février 2016 - 24 avril 2015 à 13:08
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 25 avril 2015 à 11:50
bonjour ,
je vais trier à bulle un tableau d'objets d'une classe processus
je procède comme suit :
    public void tri_dec (Vector<processus> File_Prêt)
    {
     
    boolean permut;
 
 
 
       processus tampon = new processus()  ;
     
		do {
			
			permut = false;
			for (int i = 0; i < this.File_Prêt.size() - 1; i++) {
		
				if (this.File_Prêt.get(i).getNote() < this.File_Prêt.get(i+1).getNote()) {
					
					tampon = this.File_Prêt.get(i);
					this.File_Prêt.get(i)= this.File_Prêt.get(i+1); 
					this.File_Prêt.get(i+1) = tampon;
					permut = true;
				}
			}
		} while (permut);


je me suis bloqué au niveau de permutation de 2 objets
' this.File_Prêt.get(i)= this.File_Prêt.get(i+1);'
Mercii de m'aider
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 avril 2015 à 11:50
Bonjour,

Les getteurs sont des méthodes pour accéder à un résultat en aucun cas pour le modifier, pour cela on a des setteurs.

Remarque :

Cela ne sert à rien de déclarer processus
tampon = new processus();
tu créés un objet qui ne te serviras jamais, il vaut mieux affecter une valeur null, ou encore mieux déclarer la variable au dernier moment, là où tu en as vraiment besoin.

De plus, le mot clé
this
concerne l'objet courant, or ici ce que tu veux trier c'est le paramètre de la méthode, ça ne concerne donc en rien l'objet courant, d'ailleurs tu pourrais même mettre la méthode static...

Enfin, en Java il y a des conventions de nommages, les noms de classes doivent commencer par une majuscule, les noms de méthodes et de paramètres doivent commencer par une minuscule, ne pas contenir d'accents ni _ ou $, et lorsqu'il y a un changement de mots on mettra une majuscule.

Notons aussi, que la classe Vector est dépréciée, il vaut mieux lui préférer les ArrayList, même si dans ton cas l'utilisation de l'interface List suffirait.

public static void triDec (List<Processus> filePret) {
    boolean permut;

    do {
        permut = false;
        
        for (int i=0; i<filePret.size()-1; i++) {
            if (filePret.get(i).getNote() < filePret.get(i+1).getNote()) {
                Processus tampon = filePret.get(i);
                filePret.set(i, filePret.get(i+1)); 
                filePret.set(i+1, tampon);
                permut = true;
            }
        }
    } while (permut);
}

Encore une remarque : généralement on préfère ne pas modifier les données que l'on passe en paramètre, il serait mieux d'avoir une méthode qui retourne la liste triée, mais sans effet de bord pour la liste passée en paramètre.

Une solution très simple pour faire cela est comme ceci :

public static List<Processus> triDec(List<Processus> list) {
    List<Processus> filePret = new ArrayList<Processus>(list);
    // tout le reste du code;
    return filePret;
}
0