Comment faire un double tri dans une arraylist

Résolu
PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 - 3 févr. 2009 à 14:16
PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 - 3 févr. 2009 à 18:18
Bonjour à tous,

Je viens de réaliser une classe qui me permet de faire un tri sur une arraylist, bon là pas de problème cela fonctionne super bien. Maintenant j'aimerai trier cette même arraylist mais cette fois-ci en fonction des id_User et des dateAffectation. En fait faire 2 tris dans la même arraylist, mais voilà je ne sais comment réaliser ce double tri.

La classe utilisée est la suivante (je n'ai pas inventé l'eau chaude):

Public Class trieur
Implements IComparer
''' <summary>
''' Attention, ceci est un exemple, je dois faire ma classe de tri
''' </summary>
'''

'''

''' <returns></returns>
''' <remarks></remarks>
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim valeurX As modif = CType(x, modif)
Dim valeurY As modif = CType(y, modif)
'Select Case valeurX.Compteur - valeurY.Compteur
' Case Is > 0
' Return 1
' Case Is = 0
' Return 0
' Case Else
' Return -1
'End Select
Select Case valeurX.Employe - valeurY.Employe
Case Is > 0
Return 1
Case Is = 0
Return 0
Case Else
Return -1
End Select

End Function
End Class

Je ne demande pas que l'on me code cette fonction, je préfère que l'on m'aiguille vers la solution.

Merci

PascalCmoa
[mailto:pascal.aknouche@free.fr email: PascalCmoa]

2 réponses

PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 5
3 févr. 2009 à 18:18
Re

je dois avoir les deux neurones qui se touchent en ce moment, je viens de m'apercevoir que j'essaie de comparer des choux avec des carottes. J'essaie de comparer un objet avec la propriété d'un objet . J'ai besoin d'aller dormir

Désolé pour le dérangement.

A+

PascalCmoa
[mailto:pascal.aknouche@free.fr email: PascalCmoa]
3
PascalCmoa Messages postés 239 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 17 janvier 2013 5
3 févr. 2009 à 17:44
Re-Bonjour

Je vais reformuler ma demande.
Après refléxion, il me parait évident qu'il est stupide de vouloir faire un nouveau tri.

Maintenant, se pose à moi un nouveau souci. J'obtiens des lignes considérées comme doublon comme le montre le tableau ci-dessous:
dateAffect |Compteur |Magasin |Affectation |Employe |Action |----
03/02/2009, 2, 5, 3, 39, 4, ----
28/01/2009, 1, 24, 11, 54, 3, ----
01/01/2009, 4, 16, 11, 74, 2, ----
04/02/2009, 3, 16, 11, 74, 2, ----
01/01/2009, 0, 16, 3, 74, 1La ligne dont le compteur 0 est considéré comme doublon à la ligne dont le compteur 4. Il faut donc supprimer la ligne avec compteur = 0.

Pour cela, j'utilise une nouvelle arrayList et je la remplie comme cela:
For j As Integer = 0 To Me._objAL.Count - 1
            Dim objet As modif = Me._objAL(j)
            If Not _objALRef.Contains(objet.Employe) And Not _objALRef.Contains(objet.dateAffect) Then
                _objALRef.Add(objet)
            End If
 Next

Malheureusement, ces quelques lignes de code me donne un "clonage" de ma première arrayList.

Ma question est comment faire pour retirer la (ou les) ligne doublon. Sachant que les lignes de l'arraylist sont des objets.

Merci.

PascalCmoa
[mailto:pascal.aknouche@free.fr email: PascalCmoa]
0
Rejoignez-nous