Trier tableau + help

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 7 avril 2005 à 15:37
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre 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.

10 réponses

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
7 avril 2005 à 16:28
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
3
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
7 avril 2005 à 16:46
sinon j'ai trouvé ca aussi :

http://www.c2i.fr/code.aspx?IDCode=559
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
7 avril 2005 à 16:46
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#
3
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
7 avril 2005 à 18:24
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 :)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 avril 2005 à 16:12
Bonjour,

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

hum.......
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
7 avril 2005 à 16:24
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é
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
7 avril 2005 à 16:36
ah ok merci, je vais essayer ca alors.
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
7 avril 2005 à 16:53
merci, je vais essayer les deux solutions enfin je vais d'abord essayer de comprendre héhé
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
8 avril 2005 à 10:10
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 ;)))
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
8 avril 2005 à 12:23
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 :)
0
Rejoignez-nous