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 :

List<List<Object>> Tableaux à deux dimensions


Sujet :

avec Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 56
    Points
    56
    Par défaut List<List<Object>> Tableaux à deux dimensions
    Bonjour,
    j'ai besoin d'utiliser une liste de liste de string par exemple mais je n'arrive pas a l'utiliser correctement, je n'ai pas vu d'exemple comme je le souhaitais sauf si je passais par des tableaux: String [][],
    Je connais mieux le c++ je voulais utiliser le meme principe que les vector, et en java j'ai lu qu'il valait mieux utiliser la classe vector.
    Donc voila comment j'utilise ces listes a deux dimensions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    List < List <String>> test = new ArrayList <List <String>> ();
    		for (int i = 0 ; i < 10 ; ++i)
    			for (int j =0; j< 3 ; ++j)
    				test.get(i).add("plop " + i + " " + j);
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at modele.Circuit.main(Circuit.java:89)

    Le probleme doit venir du constructeur. Je trouve ca d'ailleurs surprenant de devoir appeler un ArrayList.
    Enfin voila merci pour vos réponses.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Bonjour,
    Lorsque tu instancies ton tableau avec List < List <String>> test = new ArrayList <List <String>> (); seul le tableau qui va contenir les autres tableaux est instancié.

    Dans ta première boucle tu dois assigner un tableau à chaque case du premier tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    List < List <String>> test = new ArrayList <List <String>> ();
    for(int i = 0 ; i < 10 ; ++i)
        test.add(new ArrayList<String>());
        for (int j =0; j< 3 ; ++j)
    	test.get(i).add("plop " + i + " " + j);
    MigouW

    La seule bataille perdue d'avance est celle que l'on refuse de livrer.


    Pensez au tag
    Ma réponse vous a été utile, votez plus 1 sur le message.
    Ma réponse est hors sujet, votez moins 1 sur le message.

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Ton problème est que tu tentes d'accéder à un indice de ta liste qui n'existe pas encore à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test.get(i).add("plop " + i + " " + j);
    Tu fais un get(i) alors que test ne contient encore aucun élément. Dans ta première boucle, il te faudrait faire un add de ta clé avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i = 0 ; i < 10 ; ++i) {
      test.add(i);
      for (int j =0; j< 3 ; ++j) {
        test.get(i).add("plop " + i + " " + j);
      }
    }
    Edit : J'me suis fais griller et en plus je dis de la merde MigouW a raison.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Ok Merci beaucoup pour vos réponses, je pensais que le constructeur par défaut gérer ca. Je pensais mal encore une fois -_-

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

Discussions similaires

  1. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  2. decalaration dynamique tableaux deux dimensions et TRI
    Par Alex35 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/12/2007, 13h48
  3. [Problème]Tableaux deux dimensions
    Par maloute80 dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2007, 14h31
  4. [Tableaux] Gerer des tableaux à deux dimensions
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 15h20

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