Trier tableau + help [Résolu]

Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
- - Dernière réponse : sebseb42
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Dernière intervention
9 novembre 2007
- 8 avril 2005 à 12:23
Bonjour,

j'ai une classe Personne :

Personne
{
public :
String * nom ;
String * prenom ;
int age ;
}

et j'ai une arraylist de 15 instance de ma classe Personne, et je souhaiterais pouvoir les trier par exemple sur leur nom ou sur leur prenom ou sur leur age par ordre croissant ou decroissant. Mais je n'ais point vu de maniere qui permettre de le faire.
Je precise que j'ai une arraylist de 15 instance mais je peux faire aussi avec un tableau de 15 items.

Quelqun aurait t'il une solution ?

Par avance, merci.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Dernière intervention
4 décembre 2009
3
Merci
personellement je construirait une datatable avec 3 champs correspondant aux 3 membres de ta classe (nom , prenom , age )

ensuite tu remplit ta datatable avec les données de ton arraylist

Ensuite tu peux utiliser les options de tri de l'objet datatable ou de la dataview associée, ce qui te permettra de trier ASC ou DESC sur la colonne que tu veux.

Ensuite tu écrit une méthode qui retransforme ta datatable en arraylist une fois triée.

pour résumer :

1/ private datatable GetDataTable ( ArrayList maListe)
{}

2/ private datatable SortTable ( datatable maTable , String maColone, String monSens)
{}

3/ private ArrayList GetArrayList ( datatable maTable )
{}

avantages : si modifie ta classe personne , tu n'a pas de code a réécrirer pour dire sur quel membre tu veux trier.

et hop

Merci titeoe 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de titeoe
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Dernière intervention
4 décembre 2009
3
Merci
sinon j'ai trouvé ca aussi :

http://www.c2i.fr/code.aspx?IDCode=559

Merci titeoe 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de titeoe
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
En créant un sorter perso implémentant /library/fre/cpref/html/frlrfsystemcollectionsicomparerclasstopic.asp IComparer.
Petit exemple vite fait :

Sorter :
public enum PersonneSortMember
{
Nom,
Prenom,
Age
}

public class PersonneSorter : IComparer
{
public PersonneSorter ( PersonneSortMember sortBy )
{
m_sortBy = sortBy;
}

private PersonneSortMember m_sortBy;

#region Membres de IComparer

public int Compare(object x, object y)
{
Personne xPersonne = (Personne)x;
Personne yPersonne = (Personne)y;

int result = 0;

switch ( m_sortBy )
{
case PersonneSortMember.Nom:
result = xPersonne.nom.CompareTo(yPersonne.nom);
break;

case PersonneSortMember.Prenom:
result = xPersonne.prenom.CompareTo(yPersonne.prenom);
break;

case PersonneSortMember.Age:
result = xPersonne.age.CompareTo(yPersonne.age);
break;
}

return result;
}

#endregion
}

Utilisation :
liste.Sort(new PersonneSorter(PersonneSortMember.Nom));
liste.Sort(new PersonneSorter(PersonneSortMember.Prenom));
liste.Sort(new PersonneSorter(PersonneSortMember.Age));

Cocoricoooooooo !!!!
coq
MVP Visual C#

Merci cs_coq 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Dernière intervention
9 novembre 2007
3
Merci
la solution de coq est de loin la meilleur, car elle est la plus
approprier, titeoe, je te suggere de passer par un SQL Server 2005 avec
la DB monter sur un RAID :P



tu peux creer un Sorter perso comme l'a montrer coq, et l'utiliser
aussi avec la fonction Array.Sort() si tu as besoin de trier un tableau
et non une liste :)

Merci sebseb42 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de sebseb42
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Dernière intervention
7 juillet 2005
0
Merci
Bonjour,

jetes un oeil ici
http://www.csharpfr.com/forum.v2.aspx?ID=211455 ca peut t'aider

hum.......
Commenter la réponse de Athalus
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
0
Merci
si j'ai un tableau à une dimension dedans j'arrive a le trier :

talbeau->sorting = Sorting::ascending ou descending

la syntaxe est pas bonne mais bon

mais en faite je voudrais trier mes objets sur la base d'une de leur propriété
Commenter la réponse de cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
0
Merci
ah ok merci, je vais essayer ca alors.
Commenter la réponse de cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
0
Merci
merci, je vais essayer les deux solutions enfin je vais d'abord essayer de comprendre héhé
Commenter la réponse de cs_emmanuel9
Messages postés
433
Date d'inscription
samedi 26 avril 2003
Dernière intervention
4 décembre 2009
0
Merci
je suis d'accord avec toi sebseb42, la solution de coq est vraiment bien ( et en plus c'est la meme que celle de mon 2e post).

Mais bon, j'ai le droit d'etre fatigué et pas aussi balaise que coq ;)))
Commenter la réponse de titeoe
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Dernière intervention
9 novembre 2007
0
Merci
ta solution etait inaproprier mais pas mauvaise du tout, moi je suis une grosse quiche en base de donnée, datatable, dataset et tout le tintouin, et je suis content que tu m'es appris des choses a ce sujet :)
Commenter la réponse de sebseb42

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.