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

Windows Forms Discussion :

[C#] Inverser l'ordre des éléments d'une Hashtable


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 113
    Par défaut [C#] Inverser l'ordre des éléments d'une Hashtable
    Bonjour,


    Je voudrais avoir les éléments d'une hashtable rangés dans l'ordre dans lequel ils ont été ajouter.
    Car je viens de me rendre compte que le premier élément se trouvait tout à la fin de la Hashtable.
    Est-il possible d'inverser l'ordre ou ajouter en queue et non en tête de Hashtable ?
    Merci

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut,

    Je ne vois pas de reponse à moins de creer ta propre structure combinant une hashtable pour l'accees clé/valeur et une autre collection pour sauvegarder l'ordre

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Par défaut
    Une hashtable est rangée dans l'ordre des clés de hachage et non pas chronologiquement ; dans ton cas il semble préférable de choisir une autre structure ordonneé (stack, queue,...)

    Sinon un simple arraylist qui (de mémoire) possède une mémoire Sort()

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par colonel
    dans ton cas il semble préférable de choisir une autre structure ordonneé (stack, queue,...)

    Sinon un simple arraylist qui (de mémoire) possède une mémoire Sort()
    Oui mais s'il a besoin d'un accees clé/valeur il faut bien utiliser une hashtable dans ce cas.

    L'autre solution la plus evidente est d'iterer sur la hashtable et d'inserer en meme temps dans une arraylist, mais bon ce n'est pas trop beau et coté performances

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 113
    Par défaut
    Vu que j'utilise une base de données je pense avoir contourné la chose en modifiant ma requete.
    Cepensdant est-il possible d'ajouter un élément dans une table de hashage à un index précis ?
    Car j'ai un probleme d'ordre à l'ajout.
    exemple:
    ajout de l'elem 1 -> emplacement 6 dans la hashtable
    ajout de l'elem 2 -> emplacement 1 dans la hashtable
    ajout de l'elem 3 -> emplacement 7 dans la hashtable

    N'est pas possible d'avoir dans la hashtable les éléments de manière indexé ?
    Donc comme ça :
    ajout de l'elem 1 -> emplacement 1 dans la hashtable
    ajout de l'elem 2 -> emplacement 6 dans la hashtable
    ajout de l'elem 3 -> emplacement 7 dans la hashtable

    C'est problématique dans mon cas

    En ce qui concerne mon probleme, je suis obligé d'utiliser une table de hashage comme structure.
    Merci

  6. #6
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    J'étais entrain de lire un article et je me suis souvenu de ce post, qui datte deja d'un mois !

    Le framework 2.0 offre de nouvelles structures issues du namespace System.Collections.Specialized qui permettent de personnaliser la Hashtable et d'y ajouter de nouvelles focntionnalités.

    Enfin, la collection OrderedDictionary, classe permet de resoudre le probleme de ce Post

  7. #7
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par lancer83
    Vu que j'utilise une base de données je pense avoir contourné la chose en modifiant ma requete.
    Cepensdant est-il possible d'ajouter un élément dans une table de hashage à un index précis ?
    Tsssssssssssssssssssss..........................
    Bon... conceptuellement, ce que tu dis est un abérration.

    Une Hashtable n'est pas une collection ordonnée. Le dernier ou le premier élément dedans, ça dépend de la clef que tu utilises, et il n'y a aucune garantie sur l'ordre d'insertion ou de récupération. (ce qui signifie qu'il peut change entre deux versions du framexwork)

    Par analogie, c'est comme si tu avais un gros sac en toile contenant des haricots, et que tu demandais "c'est possible que mon sac, quand je sors un haricot, il me sorte le premier que j'ai rentré dedans ?"
    Ou bien "c'est possible d'insérer un haricot dans mon sac, pile entre les deux haricots que j'ai choisi ?"

    Bref, il te faut une autre structure de données que la Hashtable de base, tu n'as pas le choix. +1 pour les réponses de mehdi et colonel (mais attention, la ArrayList est très lente si elle contient beaucoup d'éléments).

  8. #8
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut Mose

    Citation Envoyé par Mose
    mais attention, la ArrayList est très lente si elle contient beaucoup d'éléments.
    Je suis interressé par cette remarque. sur quel critere tu t'es basé ? un petit lien ?
    je crois que la ArrayList causeun probleme de performance que lorsqu'elle change de taille par rapport à la taille initiale allouée

    A part ca, comme j'ai dit OrderedDictionary resoud les problemes de tri et d'accees de la Hashtable

  9. #9
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par mehdi_tn
    Je suis interressé par cette remarque. sur quel critere tu t'es basé ? un petit lien ?
    Salut Medhi,
    Nan juste, un pti programme de test qui fait des ajouts/recherche/suppressions.
    Citation Envoyé par mehdi_tn
    je crois que la ArrayList cause un probleme de performance que lorsqu'elle change de taille par rapport à la taille initiale allouée
    Curieusement non, l'ajout est aussi rapide qu'avec la Hashtable, mais c'est la recherche qui explose tous les compteurs !
    Citation Envoyé par mehdi_tn
    A part ca, comme j'ai dit OrderedDictionary resoud les problemes de tri et d'accees de la Hashtable
    Ouaip, j'ai vu ça (mais j'ai répondu trop vite )

  10. #10
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par Mose
    Curieusement non, l'ajout est aussi rapide qu'avec la Hashtable, mais c'est la recherche qui explose tous les compteurs !
    Bizarre, curieux de savoir comment ils ont implementé ca !!!, bon la recherche et la suppression, c'est clair que ca explose les compteurs, mais ce ne sont pas des criteres à prendre à consideration dans son cas de figure, d'ailleurs s'il travaille en 1.1 , il n'aura pas d'autres alternatives que d'utiliser une ArrayList

    A+

  11. #11
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par mehdi_tn
    Bizarre, curieux de savoir comment ils ont implementé ca !!!
    Un coup de Reflector et tu sauras...
    Citation Envoyé par mehdi_tn
    bon la recherche et la suppression, c'est clair que ca explose les compteurs
    Ah non, pas la suppression. Enfin après ça dépend si tu utilises la suppression indexée ou la suppression par objet (qui doit faire une recherche)
    Citation Envoyé par mehdi_tn
    d'ailleurs s'il travaille en 1.1 , il n'aura pas d'autres alternatives que d'utiliser une ArrayList
    Je me permet d'ajouter : "pas d'autres alternatives simples que d'utiliser une ArrayList".
    On peut toujours créer sa propre structure de donnée et la coller en unsafe pour optimiser un peu les perfs...

Discussions similaires

  1. [FAQ] [jQuery] Comment puis-je changer l'ordre des éléments d'une liste ?
    Par SylvainPV dans le forum Contributions JavaScript / AJAX
    Réponses: 3
    Dernier message: 18/03/2014, 23h44
  2. Ordre des éléments d'une map<int, string>
    Par jamsgoodon dans le forum Débuter
    Réponses: 9
    Dernier message: 18/02/2011, 15h27
  3. Inverser l'ordre des éléments d'un tableau
    Par nitch01 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/10/2009, 08h18
  4. Changer l'ordre des éléments d'une JList avec la souris
    Par rafalsh dans le forum Composants
    Réponses: 0
    Dernier message: 02/07/2009, 20h13
  5. [Collections] ordre des clés d'une Hashtable
    Par matzeus dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/10/2006, 09h17

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