Tom's Guide > Forum > Programmation > [Résolu] tableau d'ArrayList en java
[Résolu] tableau d'ArrayList en java - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à tous,

j'aurais une petite question pour vous:

est-il possible de faire des tableaux d'ArrayList en java?
Par exemple, lorsque je tape ceci:

Code :
  1. ArrayList<String> [] stra = new ArrayList[2];
  2.         stra[0].add("nom" );
  3.         stra[0].add("nom1" );
  4.         stra[1].add("nom2" );
  5.         stra[1].add("nom3" );
  6.         stra[1].add("nom4" );


Eclipse ne me signale pas d'erreur mais lorsque je lance le programme, j'ai une "java.lang.NullPointerException".

Pouvez-vous m'aider?

Merci beaucoup

Message cité 1 fois
Message édité par towanda@IDN le 23-03-2007 à 12:20:47
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
- 0 +

Salut,

C'est bizarre de vouloir faire des tableaux d'ArrayList, sachant qu'un ArrayList est un tableau dynamique.
Je ne sais pas du tout si c'est possible de faire des tableaux d'ArrayList, mais tu peux faire des ArrayList d'ArrayList, ce qui doit pouvoir résoudre ton problème je pense... non ?

Répondre à OmaR

Ok, je peux faire ça.
Mais alors comment modifier une valeur contenue dans ma "sousArrayList"? sans devoir supprimer la "sousArrayList", en recréer une nouvelle avec les bonnes valeurs et la réinsérer dans l'ArrayList principale?

Je suis un peu perdue...

Répondre à towanda@IDN
- 0 +

Oula.... là je vois pas trop quoi te répondre ! :D
Ca fait un moment que j'ai pas fait d'ArrayList.

Répondre à OmaR

En fait, je ne suis pas spécialement attachée aux ArrayLists lol.
Mais je cherche un moyen d'implémenter une structure, genre matrice (tab [][]) dont le nombre de lignes dépend des traitements que mon application fait précédemment et dont le nombre de colonnes varie selon chaque ligne :D

En fait, pour donner un exemple assez visuel, je voudrais pouvoir implémenter:

un tableau de longueur x contenant une liste de noms
un tableau de longueur x contenant la liste des prénoms associés
un tableau de longueur x contenant la liste des animaux de compagnie de chaque personne (nom prénom).

Ce qui donnerait:

[Duran] [Pol] [chat, chien, poisson]
[Debon] [Luc] [chien, rat]
[Leduc] [Jon] [souris, hamster, canari, serpent]
...
Le nombre de personnes est déterminé par l'application, ce qui pose déjà problème au niveau du stockage des listes d'animaux.

Ensuite, je voudrais regrouper d'une manière ou d'une autre les lignes qui ont un animal commun:

ici ça donnerait:
groupe 1
[Duran] [Pol] [chat, chien, poisson]
[Debon] [Luc] [chien, rat]
et
groupe 2
[Leduc] [Jon] [souris, hamster, canari, serpent]
...

Là également ça me pose problème vu que je ne connais pas le nombre de personnes qu'il y aura dans chaque groupe.

C'est un problème idiot mais je n'arrive pas à trouver une structure de données qui me permettrait de m'en sortir..

Répondre à towanda@IDN

Aurais tu trouver une solution a ton tableau dynamique indéxé par des String ?

Je suis dans le même cas que toi...


Message édité par immobilia le 23-03-2007 à 11:49:04
Répondre à immobilia

Oui, en fait il est possible de créer des ArrayList d'arrayList, je n'avais simplement pas trouvé la bonne syntaxe:

Par exemple:

ArrayList<ArrayList<ArrayList<String>>> stringaaa = new ArrayList<ArrayList<ArrayList<String>>>();

et pour l'utilisation:

stringaaa.add(new ArrayList<ArrayList<String>>());
stringaaa.add(new ArrayList<ArrayList<String>>());

stringaaa.get(0).add(new ArrayList<String>());
stringaaa.get(0).add(new ArrayList<String>());
stringaaa.get(0).add(new ArrayList<String>());
stringaaa.get(0).get(2).add("nouvelle chaine" );

Tu peux aller aussi loin que tu veux comme ça je pense, ça te débarrasse des problèmes liés à la connaissance de la taille de tes tableaux.

J'espère que ça répond à ta question :-)

Répondre à towanda@IDN

towanda@IDN a écrit :

Bonjour à tous,

Code :
  1. ArrayList<String> [] stra = new ArrayList[2];
  2.         stra[0].add("nom" );
  3.         stra[0].add("nom1" );
  4.         stra[1].add("nom2" );
  5.         stra[1].add("nom3" );
  6.         stra[1].add("nom4" );


Eclipse ne me signale pas d'erreur mais lorsque je lance le programme, j'ai une "java.lang.NullPointerException".

Pouvez-vous m'aider?

Merci beaucoup



Je vois vraiment pas ou est l'interet de mettre une dimension à une Arraylist! Ecrit plutot ceci à la place alors :

Code :
  1. String [] stra = new String[2];



Répondre à RiiMii

justement, l'objet de ma question était de trouver un moyen de ne pas mettre de dimension, d'où ma solution d'arraylists d'arraylists

Répondre à towanda@IDN

Ca je sais merci , je connais bien java . Ce que je voulais en fait signaler , c'est comment t'as eu l'idée de mettre une dimension à un object qui est fait pour justement ne pas avoir de limite ( et qui de plus peut contenir ce qu'il veut ) .

Répondre à RiiMii

Parce que je pensais d'abord qu'il était impossible de créer des arraylists d'arraylists, et par la suite de modifier un élément d'une arraylist d'arraylist. Je n'avais pas trouvé la bonne syntaxe.

Répondre à towanda@IDN
- 0 +

Sinon le NullPointerException, c'est parce qu'il faut initialiser les ArrayList avant de les utiliser... comme tout objet.


Message édité par aik le 23-03-2007 à 21:21:36
Répondre à aik

Bah oui new ArrayList<E>

Répondre à RiiMii

Oui, ça semble évidenet avec un peu de maitrise, mais à l'époque ça ne l'était pas pour moi et personne n'avait su me répondre

Répondre à towanda@IDN
- 0 +

ArrayList []List = new ArrayList[5];

for(int i=0;i<4;i++)
List[i]=new ArrayList();

List[0].add("tend" );

System.out.println("la valeur est :"+List[0].get(0));

Répondre à tend
Tom's Guide > Forum > Programmation > [Résolu] tableau d'ArrayList en java
Aller à :

Il y a 459 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens