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 :

[Arraylist] Manipulation boucle


Sujet :

Collection et Stream Java

  1. #21
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    peux-tu envoyer le code de ton initialization + boucle ?

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Si je ne m'interesse qu'a la syntaxe ca devrait fonctionner car avec la fonction

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    static public ArrayList<Integer> test()  {
            ArrayList<String> echelleTps =  new ArrayList<String> ();
            ArrayList<Integer> echelleDispo =  new ArrayList<Integer> ();
     
            for (int i=0;i<5;i++){
                echelleTps.add("toto");
            }
     
            for(int j = 0;j<echelleTps.size()-1;j++)
            {
                echelleDispo.add(j,0);                              
            }
     
            int gap= 3;
     
            for(int i=0;i<gap;i++)
            {                            
                for(int j = 0;j<echelleTps.size()-1;j++)
                {
                    int compteur=0;
                    int retour=0;
                    String val1=  echelleTps.get(j);
                    String val2=  echelleTps.get(j+1);                                      
                    compteur+=1;                                                        
                    retour=retour+compteur;
                    int temp = echelleDispo.get(j);
                    int Temp=temp+retour;
                    System.out.println("iterateur : "+j+" Valeur : "+Temp);
                    echelleDispo.set(j,Temp);                                     
                }
            }
     
            return (echelleDispo);          
        }

    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (Integer val : test()){
            System.out.println("Value="+val);
        }
    le résultat est:
    iterateur : 0 Valeur : 1
    iterateur : 1 Valeur : 1
    iterateur : 2 Valeur : 1
    iterateur : 3 Valeur : 1
    iterateur : 0 Valeur : 2
    iterateur : 1 Valeur : 2
    iterateur : 2 Valeur : 2
    iterateur : 3 Valeur : 2
    iterateur : 0 Valeur : 3
    iterateur : 1 Valeur : 3
    iterateur : 2 Valeur : 3
    iterateur : 3 Valeur : 3
    Value=3
    Value=3
    Value=3
    Value=3

    Donc s'il reste un problème d'initialisation de ta liste c'est qu'elle remise à zéro ailleurs.

    Est-ce que tu peux envoyer le code complet de ta classe et un exempl d'utilisation ?

  3. #23
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Par défaut
    Citation Envoyé par Katachana
    J'ai encore un p'tit souci, je ne comprend pas pourquoi l'arraylist<integer> echelleDispo fa une taille de ehcelleTps.size() *2 .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("boucle : "+j+" taille : "+echelleDispo.size());
    me donne pour j => de 0 a 120 et pour echelleDispo.size() => de 0 à 240


    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
    19
    20
    21
    22
    		for(i=0;i<gap;i++)
        	{			
    		  debut.add(GregorianCalendar.DATE,+1);
    		  // System.out.println("DEbut :   "+debut.get(Calendar.DATE)+"/"+debut.get(Calendar.MONTH)+"/"+debut.get(Calendar.YEAR));		
    			   for(int j = 0;j<echelleTps.size()-1;j++)
    			   {
    				   compteur=0;
    				   retour=0;
    				   String val1=  echelleTps.get(j);
    				   String val2=  echelleTps.get(j+1);
    				   GregorianCalendar Val1=parseDate3(val1);				   
    				   GregorianCalendar Val2=parseDate3(val2);
    				   if ( (debut.after(Val1)) && (debut.before(Val2)) && (debut.get(Calendar.DAY_OF_WEEK)!=7 || debut.get(Calendar.DAY_OF_WEEK) !=1) ) {
    						compteur=compteur+1;
    						}
     
    				   retour=retour+compteur;			  		
    				   echelleDispo.add(j,retour); 
    				   System.out.println("boucle : "+j+" taille : "+echelleDispo.size());
    			   }
    			   }
    		return echelleDispo;

    On faite, quand tu fait "list.add(index,val)" tu met "val" dans la position "index" de la list, et cell qui ete a la position "index" devient a "index+1" ansi de suite , tous les valeur sont translaté de 1 à droite a partir de la position "index".
    Je pense que tu doit plutôt fait "list.set(index,val)"

  4. #24
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Bonjour elmor,


    Alors voila ma philosophie :

    la méthode est appelé dans un fichier XSL n fois en fonction du nombre de segments de dates contenus dans un fihcier XML. C'est pour cela que j'initialise et instancie l'Arraylist au debut de la méthode.
    En gros je souhaite qu'a chaque appel de la fonction, l'arraylist soit initialisée pour obtenir un résultat comme cela:


    segments (contenu dans le XML):
    05/12 au 10/12 spec
    01/01 au 02/01 faisabilité
    05/01 au 06/06 conception

    Pour chaque segments je souhaite avoir la répartition des jours travaillés dans mon tableau selon une echelle de temps du type (Arraylist echellTps) :


    04/12/2006 11/12/2006 18/12/2006 25/12/2006 01/01/2007
    08/01/2007 15/01/2007 22/01/2007 29/01/2007 01/02/2007 05/02/2007 12/02/2007 19/02/2007 26/02/2007 01/03/2007 05/03/2007 12/03/2007

    spec 5 4 6
    faisabilité 2 2 2
    conception 1 5 3


    Le probleme d'initialisation peut venir du fait que j'instancie mon Arraylist a chaque appel de la méthode??
    En testant une déclaration globale de l'Arraylist j'obtiens les meme valeurs dans toutes les colonnes .....

  5. #25
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Comme je te l'ai déjà expliqué je te conseille d'utiliser HashMap plutôt que deux ArrayList, ce qui t'évitera de faire à chaque fois la concordance entre les deux.

Discussions similaires

  1. JSTL : traitement de deux arrayList avec boucle c:forEach
    Par kerido dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/02/2014, 22h53
  2. arraylist vba, boucles imbriquées
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/07/2011, 09h49
  3. manipuler une table dans une boucle.
    Par DonQuiShoote dans le forum Access
    Réponses: 13
    Dernier message: 28/02/2007, 08h05
  4. Manipulation d'une arraylist
    Par timbrochier dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 13/10/2006, 16h41
  5. [VB.net 2005] Boucle et ArrayList
    Par collaud_vb dans le forum Windows Forms
    Réponses: 15
    Dernier message: 27/09/2006, 10h44

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