IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Arraylist Trier par Length


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2014
    Messages : 75
    Points : 63
    Points
    63
    Par défaut Arraylist Trier par Length
    Bonjour à tous,

    Je suis à la recherche d'une méthode permettant de trier un Arraylist par le nombre de caractère de ses valeurs, mais je comprends pas bien comment fonctionne Sort avec la méthode IComparer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
        Private Sub arraySortCompare()
            Dim str As String = ""
     
            Dim list As New ArrayList
            list.Add("Australian")
            list.Add("Mongolian")
            list.Add("Russian")
            list.Add("Austrian")
            list.Add("Brazilian")
            list.Add("a")
            list.Add("de")
            list.Add("des")
            list.Add("un")
            list.Add("une")
     
            Dim oComparer = New cComparer()
            list.Sort(oComparer)
     
            Dim value As String
            For Each value In list
                str &= value & "<br/>"
            Next
     
            litRslt.Text = str
        End Sub
     
        Public Class cComparer
            Implements IComparer
            Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
                Return New CaseInsensitiveComparer().Compare(y, x)
            End Function
        End Class
    Merci pour votre aide.

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    la méthode Compare(x, y) d'une classe implémentant IComparer fonctionne ainsi :
    - si x doit être considéré comme supérieur à y, alors elle renvoie 1,
    - si y doit être considéré comme supérieur à x, alors elle renvoie -1,
    - si x et y doivent être considérés comme égaux, alors elle renvoie 0
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Petit complément d'information à ce qu'a dit jopopmk

    Les deux objets en paramètre doivent être caster en ce que tu cherches à comparer, donc ici en string.
    Vu que tu cherches à faire une comparaison "simple", tu peux employer la méthode CompareTo de l'integer à comparer.

    Ce qui au final te donne un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Public Class cComparer
            Implements IComparer
            Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
                Dim x1 = TryCast(x , String)
                Dim y1 = TryCast(y , String)
     
                If x1 Is Nothing Or y1 Is Nothing Then Throw New NotImplementedException
                Dim ret  = x1.Length.CompareTo(y1.Length)
                Debug.WriteLine(x1 & " : "& y1 & " = " & ret)
               Return  ret
            End Function
        End Class
    Avec le debug.WriteLine on voit que la function est appelée en boucle :
    Mongolian : Australian = -1
    Russian : Australian = -1
    Russian : Mongolian = -1
    Austrian : Australian = -1
    Austrian : Mongolian = -1
    Austrian : Russian = 1
    Brazilian : Australian = -1
    Brazilian : Mongolian = 0
    a : Australian = -1
    a : Brazilian = -1
    a : Mongolian = -1
    a : Austrian = -1
    a : Russian = -1
    de : Australian = -1
    de : Brazilian = -1
    de : Mongolian = -1
    de : Austrian = -1
    de : Russian = -1
    de : a = 1
    des : Australian = -1
    des : Brazilian = -1
    des : Mongolian = -1
    des : Austrian = -1
    des : Russian = -1
    des : de = 1
    un : Australian = -1
    un : Brazilian = -1
    un : Mongolian = -1
    un : Austrian = -1
    un : Russian = -1
    un : des = -1
    un : de = 0
    une : Australian = -1
    une : Brazilian = -1
    une : Mongolian = -1
    une : Austrian = -1
    une : Russian = -1
    une : des = 0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Paradox] Trier par date
    Par Fabs dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2006, 19h41
  2. trier par date
    Par tounsi dans le forum Oracle
    Réponses: 1
    Dernier message: 23/02/2006, 16h46
  3. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 15h38
  4. [FAQ] Trier par ordre... non-alphabétique
    Par kaceo dans le forum Langage SQL
    Réponses: 15
    Dernier message: 02/02/2006, 09h17
  5. [Hashtable] trier par l'association de deux clefs
    Par alex.nd dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/08/2004, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo