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

Collection et Stream Java Discussion :

[Collections] ordre des clés d'une Hashtable


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 41
    Points
    41
    Par défaut [Collections] ordre des clés d'une Hashtable
    bonjour,
    J'aimerai que qqun m'eclaire sur la maniere dont une hashtable stock ses donnees.
    Voila ce qu'il ce passe:
    je declare une hashtable H
    je lui fais H.put((String)S,nomObjet)
    et S a comme valeurs successives:
    r0
    r1
    r2
    r3
    r4
    r1-1
    r1-2
    r1-3
    r1-7
    r2-3
    r1-7-3
    r2-3-2

    cependant lorsque que j'appelle un iterator sur cette hashtable afin de recup mes objets,ca lit dans l'ordre suivant ( alors que je lui ai rien demande...lol):
    r1-7-3
    r1-3
    r4
    r1-2
    r2-3-2
    r1-1
    r3
    r2
    r1
    r2-3
    r1-7
    r1-4

    est ce que qqun sait si c'est l'ordre de stockage qui est modifie, si c'est l'iterator qui fait tout ca au hasard ou bien si tout ca est régie par une regle qu'apparemment je ne connais pas !
    merci d'avance
    Mat l'intrigué

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Il me semble bien qu'une hash table ne garanti l'ordre de ces élément. Je viens de vérifier la javadoc, ce n'est pas précisé ( contrairement a HashSet ). Toutefois ce comportement me semble logique pour l'utilisation normale d'une hashtable.

  3. #3
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    Je pense qu'avec une HashTable tu recupère tes objects avec la methode get("key").
    Si tu veux qu'il te les rendent dans un ordre precis il faut un autre objet de list.

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Si tu veux conserver l'ordre, il serait peut-être plus judicieux d'utiliser une "LinkedHashMap".

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Un TreeMap plutôt

  6. #6
    Membre du Club Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    merci pour toutes vos reponses,
    je vais essayer tout ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toutefois ce comportement me semble logique pour l'utilisation normale d'une hashtable.
    dis moi iohack ce qui te fait penser que l'ordre a la recuperation des donnees est normal?

  7. #7
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par matzeus
    dis moi iohack ce qui te fait penser que l'ordre a la recuperation des donnees est normal?
    Je ne pense pas qu'il ait voulu dire que l'ordre était normal, mais que le désordre était normal... Comme une HashTable n'est pas triée, elle rentre ses données "à l'arrache", sans se préoccuper de lui donner un index.
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  8. #8
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Tout à fait blackwood. Une hashtable sert à récupérer des valeur selon leur clef. C'est la fonction principale de ce composant et c'est uniquement ce que l'on attend de lui. La façon dont ce composant stocke ses objets en interne, on s'en moque pourvu qu'il nous donne le bon objet correspondant à une clef précise.
    Si l'ordre de stockage et surtout de restitution des objets est important, alors utiliser une hashtable est une erreur.

  9. #9
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Sinon, pourquoi vous utilisez toujours Hashtable, Vector, etc... et non HashMap, ArrayList (je sais, ça n'est pas tout le monde, mais quand même...)

  10. #10
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Loin de moi l'idée d'utiliser Vector et compagnie plutot qu'ArrayList

  11. #11
    Membre du Club Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    finalement j'ai utilise une treeMap et c'est vrai que ca marche tres bien!
    je vous remercie pour toutes ses info.
    je vais maintenant appuyer sur le fameux bouton "resolu"

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

Discussions similaires

  1. [C#] Inverser l'ordre des éléments d'une Hashtable
    Par lancer83 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 31/08/2006, 20h03
  2. [Collections] Trier le contenu d'une Hashtable
    Par shaun_the_sheep dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 12/12/2005, 08h25
  3. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43
  4. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

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