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 :

Initialiser une arraylist


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    367
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 367
    Par défaut Initialiser une arraylist
    bonjour

    je dois faire des ajouts dans une arraylist. cependant ces ajouts ne sont pas fait suivant un ordre chronologique : je veux dire je dois ajouter d'abord à l'index 5 ensuite 2,ensuite 1 (cet ordre d'ajout aléatoire n'est pas connu d'avance)....

    donc je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List listP = new ArrayList(10);
            listP.add(5, 2);
    et j'ai une exception de depassement d'index

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
    comment puis je procéder

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    Quel est exactement le but de la manoeuvre ?

    si la liste est de taille prédéfinie, pourquoi ne pas utiliser directement un tableau ?

    au pire voici une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.List test = new java.util.ArrayList(java.util.Collections.nCopies(10, null));
    test.set(5,2); //positionne l'élément de l'index 5
    System.out.println(test);

  3. #3
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    367
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 367
    Par défaut
    pour te repondre j'utilise pas de tableau parceque plus tard je vais faire beaucoup d'opération

    en résumé je doit parcourir une hashmap binaire et insérer l'indice des colonnes de cette hashmap qui sont égal à un et non zero dans mon Arraylist sous dorme d'Arraylist

    Je présente un peu un bout de code sa va etre plus clais

    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
     
    java.util.List listP = new java.util.ArrayList(java.util.Collections.nCopies(nbActivite, null));
     
            for (int i =0; i<10; i++) {   // parcourir les lignes da la table de hachage MA qui contient des vecteurs
                List vecteurTemp = (Vector) MA.get(i); 
                for (int j =0; j<nbActivite; j++){   // parcourir les vecteur de chacune des lignes i
                    int e = ((Integer)(vecteurTemp.get(j))).intValue();  // e = element de M.A. (i,j)
     
                    if (e==1){
     
                           Predecesseur p =new Predecesseur(i);
                           List listTemp = new ArrayList();
     
                           listPTemp = (ArrayList) listP.get(j); // je vais chercher la liste contenue dans ma listP pour ajouter le nouveau élément à ajouter
     
                           listTemp.add(p);
     
                           listP.add(j, listPTemp);
     
     
                    }
                }
            }
    avec la solution que tu ma proposé j'ai sa comme erreur
    Exception in thread "main" java.lang.NullPointerException
    Si c'est pas clair, les questions sont bienvenue

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Tout est dans l'initialisation de la List si c'est une list d'ArrayList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.util.List listP = new java.util.ArrayList(java.util.Collections.nCopies(nbActivite, new ArrayList()));

  5. #5
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    D'apres ce que tu dis, la structure de donnée ne correspond pas à un tableau mais plutôt à une structure clé valeur donc une Map.

    et de ce fait, plusieurs Map au choix

    NullPointerException ?? vérifies que tu as instancié tes structures...

  6. #6
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    367
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 367
    Par défaut
    oui tu as raison plus d'erreur

    mais il me reste un probleme
    j'ai l'impression que quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    listTemp = (ArrayList)listP.get(j);
    listTemp.add(p);
    listP.add(j, listTemp);
    il m'ajoute listeTemps dans tous les index de ma listP et non uniquement à l'emplacement j

    voila ce que je veux dire

    listP initialisé : [[], [], [], [], []]
    PTemp apres avoir fait listP.get(i) []
    listP apres ajout [[], [], [], [], []]

    PTemp apres avoir fait listP.get(i) [activité 0 ]
    listP apres ajout [[activité 0 ], [activité 0 ], [activité 0 ], [activité 0 ], [activité 0 ], [activité 0 ]]

    PTemp apres avoir fait listP.get(i) [activité 0 , activité 0 ]
    listP apres ajout [[activité 0 , activité 0 ], [activité 0 , activité 0 ], [activité 0 , activité 0 ], [activité 0 , activité 0 ], [activité 0 , activité 0 ], [activité 0 , activité 0 ], [activité 0 , activité 0 ]]

    PTemp apres avoir fait listP.get(i) [activité 0 , activité 0 , activité 1 ]
    listP apres ajout [[activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ], [activité 0 , activité 0 , activité 1 ]]

  7. #7
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    effectivement, cela crée une liste contenant n fois la même arrayList.

    donc en repartant de la solution "java.util.List listP = new java.util.ArrayList(java.util.Collections.nCopies(nbActivite, null));"

    il faut peut-être modifier le traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List listTemp =  (ArrayList) listP.get(j); // je vais chercher la liste contenue dans ma listP pour ajouter le nouveau élément à ajouter
    if(listTemp == null) { 
        //pas de liste, on l'initialise
        listTemp = new ArrayList();
        // affectation de la nouvelle liste à listP
        listP.set(j, listPTemp);
    }
     
    listTemp.add(p);
    //listP.add(j, listTemp); Pas besoin de la rajouter car elle y est déjà

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

Discussions similaires

  1. Initialisation "statique" d'une ArrayList ?
    Par Muetdhiver dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/02/2013, 16h33
  2. [DEBUTANT] Peut-on initialiser une ArrayListe dés sa création?
    Par kayzra dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 09/03/2007, 07h57
  3. [Débutant] Initialiser les propriétés de tous les objets d'une ArrayList
    Par Tententai dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 23/05/2006, 20h24
  4. Réponses: 9
    Dernier message: 29/06/2004, 08h40
  5. Réponses: 3
    Dernier message: 17/12/2003, 11h26

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