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

Dotnet Discussion :

Trier la valeur d'un "hashtable" indexé


Sujet :

Dotnet

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 9
    Par défaut Trier la valeur d'un "hashtable" indexé
    Bonjour,

    J'ai un tableau de valeurs dont la clé est tout simplement l'index incrémenté.
    Je voudrai trier très rapidement les valeurs (2 millions) sans perdre l'index associé.

    Ex :
    0, "toto"
    1, "fifi"
    2, "loulou"

    retourne en tri ascendant :
    1, "fifi"
    2, "loulou"
    0, "toto"

    PS : je connais le nombre de valeurs au départ (si je dois utiliser autre chose qu'une collection pour gagner du temps).

    Vous avez une idée svp ?
    Merci.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    En faisant abstraction du 2 millions (ouai ça fait carrément beaucoup à mettre dans le même objet ... enfin bon), j'aurai utilisé un List<T>. En fait, tu peux faire ceci :
    Code c# : 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
     
            class Machin
            {
                public virtual int Index { get; set; }
                public virtual string Value { get; set; }
            }
     
            public void Test()
            {
                List<Machin> truc = new List<Machin>();
                truc.AddRange(...);
                /* tri par index */
                truc.Sort(new Comparison<Machin>(delegate(Machin a, Machin b)
                    {
                        return a.Index.CompareTo(b.Index);
                    }));
                /* tri par valeur */
                truc.Sort(new Comparison<Machin>(delegate(Machin a, Machin b)
                {
                    return a.Value.CompareTo(b.Value);
                }));
           }

    ps. A priori on peux même faire mieux en .NET 3.5 mais je suppose que tout le monde n'y développe pas encore ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 9
    Par défaut
    Merci beaucoup, je vais faire comme ça

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

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