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 :

Trier un HashTable?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut Trier un HashTable?
    Bonjour à tous!

    Voilà j'aimerais trier un hashtable pour ensuite l'utiliser dans un For Each.

    J'ai réussi avec une List(Of String), je récupère mes dates dans le bon ordre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ListeDeDate:(4 éléments)
    
    (1)01/03/2010
    (2)20/05/2012
    (3)12/11/2012
    (4)20/04/2014
    Mais dans mon Hashtable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DateHashTable : (4éléments)
    
    (1)20/04/2014
    (2)12/11/2012
    (3)20/05/2012
    (4)01/03/2010
    
    Et j'ai besoin du HashTable car j'ai besoin de deux colonnes (dates et montant).

    Merci à vous!
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    La key est une date et la value un montant, c'est ça ? Et tu veux trier par date décroissante ?

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Oui, les key vont être les différentes dates :

    • 01/03/2010
    • 20/05/2012
    • 12/11/2012
    • 20/04/2014


    Et les values qui correspondent à l'ordre des dates:

    • 78,26
    • 42,50
    • 120,36
    • 59,00


    Sinon je me suis renseigné sur les sortedList cela serait peut-être la réponse à mon problème?
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  4. #4
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Si tu utilises une Hashtable juste pour avoir 2 colonnes, mais que tu souhaites que l'une d'elle soit toujours triée, je te conseillerais plutôt la SortedList pour laquelle tu passera un IComparer adapté aux dates. Ainsi le tri des items par date se feront dès l'ajout !



    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
    35
    36
        Private Sub test()
            Dim comparer As IComparer = New DateComparerDesc
            Dim TaSortedList As SortedList = New SortedList(comparer)
     
            With TaSortedList
                .Add(Date.Parse("12/02/2014"), "Chien")
                .Add(Date.Parse("12/02/2012"), "Chat")
                .Add(Date.Parse("12/02/2013"), "Tartiflette")
                .Add(Date.Parse("12/02/2018"), "Castafiore")
            End With
     
     
            For Each v As String In TaSortedList.Values
                Console.WriteLine(v)
            Next
     
            'Retourne :
            '-Castafiore
            '-Chien
            '-Tartiflette
            '-Chat
        End Sub
     
    Public Class DateComparerDesc
        Implements IComparer
     
        Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
            Dim ascendingResult As Integer
     
     
            ascendingResult = Comparer(Of Date).Default.Compare(CDate(x), CDate(y))
     
            Return 0 - ascendingResult
     
        End Function
    End Class

  5. #5
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Merci bien!

    Je l'ai juste modifié pour avoir les valeurs Ascendantes!
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  6. #6
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par Kreepz Voir le message
    Merci bien!

    Je l'ai juste modifié pour avoir les valeurs Ascendantes!

    Au temps pour moi alors ... J'ai mal lu et je pensais que tu voulais un ordre décroissant.

    Si tu veux un tri de date par ordre croissant, pas besoin de ton propre IComparer, tu n'as qu'à déclarer ta liste typée (Of Date, Decimal) et l'IComparer par défaut du framework trie les dates ajoutées à la liste par ordre croissant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim taListe As New SortedList(Of Date, Decimal)

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

Discussions similaires

  1. Comment trier une hashtable ?
    Par isqlplus dans le forum Général Java
    Réponses: 1
    Dernier message: 15/03/2009, 11h11
  2. Trier une hashtable
    Par tongo dans le forum Langage
    Réponses: 5
    Dernier message: 13/11/2008, 17h36
  3. trier une hashtable selon les valeurs
    Par Raylemon dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/06/2007, 11h44
  4. Réponses: 1
    Dernier message: 13/06/2007, 22h36
  5. [C#] Trier une Hashtable par les valeurs
    Par Joad dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/04/2005, 16h29

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