Trier un tableau d'objets
sihem hcine
Messages postés
113
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
bonjour ,
je vais trier à bulle un tableau d'objets d'une classe processus
je procède comme suit :
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
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:
- Trier un tableau d'objets
- Trier un tableau excel - Guide
- Tableau word - Guide
- Site pour vendre des objets d'occasion - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
1 réponse
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
De plus, le mot clé
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.
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 :
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é
thisconcerne 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; }