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 :

[HashTable]ordre de rangement


Sujet :

Collection et Stream Java

  1. #1
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut [HashTable]ordre de rangement
    je suis actuellement entrein de developper une interface dynamique
    et afin de retrouver mes differents éléments j'ai decidé d'utiliser un hashTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Hashtable<String,JComponent> jpanelData
    puis j'ajoute des elements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jpanelData.put("tu es le premier",jtextfiled);
    jpanelData.put("tu es le second ",Jpanel);
    et lorsque j'affiche les "key"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Enumeration<String> nameList = jpanelData.keys();
     while(nameList.hasMoreElements())
      {
          System.out.println("DS Multipanel nameList.nextElement()"+nameList.nextElement());
      }
    le resultat obtenu est :
    tu es le second
    tu es le second

    l'odre d'insertion n'est pas respecter et pour plus d'éléments c'est encore plus melanger.

    existe-il un moyen pour que le hashtable garde l'ordre d'insertion ou une autre classe ayant ces sprecificitées la.

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Pour avoir une Map triée, tu devrais regarder du coté de la classe SortedMap .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    je vais regarder de ce cote la merci

    en plus j'ai mal cliqué je voulais poster sur la partie general et nom API


    edit : je desire seulement conserver l'ordre d'insertion il n'y a aucun tri a réaliser donc ce n'est pas ce qu'il me faut

  4. #4
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    la seule solution que je vois pour le moment est de cree une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class EtiquetteObjet{
    private String etiquette;
    private Jcomponent objet;
     
    //avec les methode get et set a definir
    }
    et ensuite cree un vecteur de type EtiquetteObjet et la je conserverai bien l'ordre d'insertion

  5. #5
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Pour l'ordre d'insertion, il faut utiliser LinkedHashMap (tout simplement!) :
    This linked list defines the iteration ordering, which is normally the order in which keys were inserted into the map (insertion-order)...

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pensez à avoir le reflexe FAQ

    Quels sont les différents types de Map ?

    a++

  7. #7
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    je suis passer avant par le faq(que j'ai peut etre mal lu ) et sur differents post d'hastable sans trouver ce que je cherchais pour ca que j'ai posté vilain :p

    et vu mon niveau d'anglais suis pas aider par l'api


    en tout cas merci pour vos reponses



    edit : je ne vois pas de methode "keys()" pour recuperer une liste ou uen enumeration des cles utilisée

  8. #8
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Citation Envoyé par link256
    edit : je ne vois pas de methode "keys()" pour recuperer une liste ou uen enumeration des cles utilisée
    http://java.sun.com/j2se/1.4.2/docs/...p.html#keySet()

  9. #9
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    merci pour ce dernier lien
    moi qui n'etait vraiment pas adepte de ces choses la (je preferais rester a mon Vector )
    j'ai enfin trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    LinkedHashMap<String,JComponent > jpanelData
    Set<String> nameList2 = jpanelData.keySet();
    Iterator<String> ite = nameList2.iterator();
     
     while(ite.hasNext())
    {
      String temp = ite.next();
      System.out.println("au debut DS Multipanel nameList.nextElement() "+temp);
    }
    c'est un peu plus long que ce que je pensais mais sa marche

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Tu n'est pas obligé d'utiliser un variable temporaire pour chaque élément. Tu peux très bien récupérer l'itérateur d'une seule ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Iterator<String> ite = jpanelData.keySet().iterator();
    De plus comme tu utilises Java 5.0 tu peux utiliser la nouvelle boucle for, par exemple pour la liste des clefs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LinkedHashMap<String,JComponent> jpanelData;
     
     
    for (String key : jpanelData.keySet()) {
        System.out.println("au debut DS Multipanel nameList.nextElement() "+ key);
    }
    Ou alors pour parcourir directements les couples clefs/valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LinkedHashMap<String,JComponent> jpanelData;
     
     
    for (Entry<String, JComponent> entry : jpanelData.entrySet()) {
        System.out.println( entry.getKey() + " = " + entry.getValue() );
    }
    a++

  11. #11
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    suis encore alergique a certaine syntaxe de Java 5.0 donc la boucle for je la laisse de cote pour le moment (quoi que sa simplie un peu le code )

    j'avais utilse un variable temporaire car dans certaine partie de mon code du au fait que j'utilisais 2fois ite.next() donc pas du tout ce que je voulais .

    Ou alors pour parcourir directements les couples clefs/valeurs
    Ce bout de code cela va bien me servir au niveau de la vérification des données charger de mon ficheir de config et de la creation de mon interface.

    vais aller voir a quoi correspond "Entry"

    encore merci

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par link256
    suis encore alergique a certaine syntaxe de Java 5.0
    Pourtant une fois qu'on y est habitué c'est vraiment le pied... J'arrive plus à faire de boucle avec un Iterator

    Citation Envoyé par link256
    vais aller voir a quoi correspond "Entry"
    http://java.sun.com/j2se/1.5.0/docs/...Map.Entry.html

    C'est juste une interface qui décrit les éléments contenu dans les Map, qui possèdent entres autres des méthodes getKey() et getValue() qui renvoit la clef et la valeur de l'élément...

    a++

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

Discussions similaires

  1. Rangement par ordre alphabétique
    Par Tisther dans le forum Word
    Réponses: 3
    Dernier message: 11/09/2008, 20h35
  2. Réponses: 4
    Dernier message: 23/10/2007, 23h09
  3. Ordre de remplissage d'une Hashtable
    Par Contrec dans le forum C#
    Réponses: 2
    Dernier message: 23/10/2007, 14h23
  4. [Collections] ordre des clés d'une Hashtable
    Par matzeus dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/10/2006, 10h17
  5. [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, 21h03

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