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

avec Java Discussion :

Parcours de liste et mise en forme


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut Parcours de liste et mise en forme
    Bonjour à tous,

    voila cela fait un petit moment que je me prends la tete sur un pb d'algo...!
    En entrée de ma méthode, j'ai une liste de string de cette forme:
    ID1,KEY1,VALUE1,ID1,KEY2,VALUE2,ID2,KEY3,VALUE3,ID2,KEY4,VALUE4...
    Sachant que les ID sont uniques mais que les keys et les values peuvent etre identiques...
    Et je voudrais en sortie, une liste ou un HashSet, de la forme:
    ID1,KEY1,VALUE1,KEY2,VALUE2,ID2,KEY3,VALUE3,KEY4,VALUE4
    C'est à dire tout regrouper par ID et dans cet ordre la...
    J'avais essayé cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private Set<String> getSetWithUniqueID(ArrayList<String> listeToTransform) {
            Set<String> idSet = new LinkedHashSet<String>();
            for (int i = 0; i < listeToTransform.size(); i ++) {
                String elt = listeToTransform.get(i);
                idSet.add(elt);
            }
            return idSet;
        }
    Or, dans le cas où certains KEY et/ou value sont identiques, la linkedhashSet n'en garde qu'une seule!
    Please help meeeee

    merci bcp!

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Le plus simple c'est de parcourir ta liste, de mémoriser l'id en cours, d'ajouter les 2 éléments suivants à la suite, puis de comparer le nouvel id avec l'id en cours pour savoir s'il faut le rajouter, rajouter les 2 éléments suivants, etc.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    heuuu oui, mais pourrais tu me donner un exemple je galère un peu...ma liste ne se forme pas exactement comme je le souhaiterai...
    merci bcp de ton aide!

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Points : 90
    Points
    90
    Par défaut
    bonjour
    je ne suis pas sur d'avoir très bien compris la solution de Rei Ichigo
    Ce que j'ai compris, est qu'il propose de faire un set comme ceci :
    ID1,KEY1 + VALUE1, KEY2 + VALUE2, ID2,KEY3 + VALUE3,KEY4 + VALUE4...
    Le + signifiant la concaténation
    A priori ca marche et ca réglerait le problème de Key identique ou de Value identique mais pas des deux à la fois
    (peut être qu'il y a plusieurs entrées Key et Value identique et que cela signifie quelque chose )

    Je n'ai pas de solution avec un Set personnellement quand j'utilise des couples clé/valeur. Il me semble que le plus simple est d'utiliser un Map
    http://java.sun.com/j2se/1.4.2/docs/.../util/Map.html

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    L'idée n'est pas de concaténait les keys et values, il faut que ce soit dans des "cases" differentes de la liste ou set en retour...
    Les hashMap ne vont pas plus m'aider qu'une liste je pense...car il reste toujours le principal probleme de parcourir la liste d'entree et de determiner les id ainsi que les keys et values associées.
    Merci de votre aide

    Thomas

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Points : 90
    Points
    90
    Par défaut
    Bon du coup j'ai du relire la doc de map car je voudrais pas dire de bétise
    Si tu fais par exemple un HashMap tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap<String, ArrayList<String>> monHashMap = new HashMap<String, ArrayList<String>>();
    La première entrée de ton hashmap est la clé ID
    le Arraylist<String> est un tableau contenant les Key et les Value

    Pour le remplir à partir de ton set c'est assez simple
    Tu parcours ton set,
    tu crées un ArrayList<String>
    tu retiens l'ID courant tant que l'ID ne change pas
    tu ajoutes dans l'ArrayList les Key et les Value comme elles arrivent
    quand l'ID change
    tu fais un ajout de ID et de ton ArrayList dans le HashMap
    Vu que ton set impose que le 1er soit l'ID et les deux valeurs suivante Key et Value, il ne devrait pas y avoir de difficulté.

    L'avantage de stocker comme ça c'est que l'utilisation plus tard est assez simple
    exemple tu veux l'ensemble des ID
    tu veux l'ensemble des Key Value associé à un ID, tu fais :
    (A vérifier la déclaration de mon HashMap, je suis pas certain de moi)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    Merci pour ces infos, et juste qq precision:

    Pour le remplir à partir de ton set c'est assez simple
    Tu parcours ton set,
    tu crées un ArrayList<String>
    tu retiens l'ID courant tant que l'ID ne change pas
    tu ajoutes dans l'ArrayList les Key et les Value comme elles arrivent
    quand l'ID change
    tu fais un ajout de ID et de ton ArrayList dans le HashMap
    Vu que ton set impose que le 1er soit l'ID et les deux valeurs suivante Key et Value, il ne devrait pas y avoir de difficulté.

    En entrée c une ArrayList que j'ai et non un Set, c'est en sortie que je souhaiterai avoir un Set ou une ArrayList peu importe, par contre justement ma question est la suivante, comment faire pour retenir l'ID courant tant qu'il ne change pas, et ajouter les key et value associé...c'est cet algo sur lequel je galère justement...
    Merci bcp de ton aide!

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Points : 90
    Points
    90
    Par défaut
    Bon je te propose 2 solution rapide non testé
    si tu veux à tout prix un sortie soit en Set soit en ArrayList, je prend l'ArrayList
    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
     
    private ArrayList<String> getSetWithUniqueID(ArrayList<String> listeToTransform) {
            ArrayList<String> monArrayList = new ArrayList<String>();
            String Id_cour = "";
            for (int i = 0; i < listeToTransform.size(); i ++) {
                if  (i%3 == 0) {
                    if (!Id_cour.equals(listeToTransform[i])) {
                        monArrayList.add(listeToTransform[i]);
                        Id_cour=listeToTransform[i];
                    }
                } else {
                    monArrayList.add(listeToTransform[i]);
                }
            }
            return monArrayList;
        }
    Je la déconseille car c'est inutilisable après...
    Comment savoir quel string correspond à quoi
    Un résultat en set, je sais pas fait
    Avec le HashMap que je conseille :

    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
     
    private HashMap<String, ArrayList<String>> getSetWithUniqueID(ArrayList<String> listeToTransform) {
            HashMap<String, ArrayList<String>> monHashMap = new HashMap<String, ArrayList<String>>();
            String Id_cour = "";
            ArrayList<String> arrayList_cour = null;
            for (int i = 0; i < listeToTransform.size(); i ++) {
                if  (i%3 == 0) {
                    if (!Id_cour.equals(listeToTransform[i])) {
                        monHashMap.put(Id_cour, arrayList_cour);
                        arrayList_cour = new ArrayList<String>();
                        Id_cour=listeToTransform[i];
                    }
                } else {
                    arrayList_cour.add(listeToTransform[i]);
                }
            }
            return monHashMap ;
        }

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    Ok merci je testerai ca et te tient au courant!

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    Merci ca marche tres bien, si ce n'est bien sur que ce n'est pas :
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeToTransform.get(i)
    Merciiiiiii

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

Discussions similaires

  1. Zone de liste avec mise en forme conditionel
    Par sakia dans le forum IHM
    Réponses: 1
    Dernier message: 19/09/2007, 03h07
  2. mise en forme conditionnelle dans une liste
    Par dpie dans le forum IHM
    Réponses: 2
    Dernier message: 23/04/2007, 19h04
  3. Mise en forme conditionnel d'options dans liste déroulante
    Par adr22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/03/2007, 12h53
  4. Problème de mise en forme dans une liste personnalisée
    Par smarties dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 17/01/2007, 15h47
  5. Pb de mise en forme dans une liste de selection
    Par crashyear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2006, 11h58

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