Générer des noms d'ArrayList dans un programme

Générer des noms d'ArrayList dans un programme - Java - Programmation

Marsh Posté le 22-01-2013 à 12:20:20    

Bonjour,  
 
Je voudrais générer des ArrayList dans une fonction mais je coince sur la génération des noms de ces ArrayList. Je débute en Java, je ne trouve pas l'info qui me va sur le net, et à tout dire je ne sais même pas si c'est possible.
 
Bref en gros je veux faire ça
 

Code :
  1. compteur++;
  2. String s="nom";
  3. s="nom"+compteur;
  4. ArrayList<Integer> s=new ArrayList<Integer>();


 
Je ne sais pas si mon code vous parait clair? Le but c'est de générer des ArrayList d'entiers avec pour noms nom1, nom2,nom3, etc.... Bien évidemment le code ci-dessus ne marche pas. Solution?
 
Merci d'avance.    [:cerveau goret]


---------------
Plouf plouf!
Reply

Marsh Posté le 22-01-2013 à 12:20:20   

Reply

Marsh Posté le 22-01-2013 à 14:19:29    

Vu ce que tu fais, passes par un tableau d'arraylist indexé par ton compteur (ou une pile d'arraylist si tu ne sais pas combien il y en aura en tout) tableau nommé avec ta string nom.
Tu aura alors des arraylist nommées nom[i] ce qui est pas loin de ce que tu voulais.
A+,


Message édité par gilou le 22-01-2013 à 14:21:46

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-01-2013 à 14:47:32    

Ah bah merci Gilou.    :jap:  
 
Je ne connaissais pas et ce n'est pas dans mon cours mais au moins je vais pouvoir avancer et faire à mon idée.  :)


---------------
Plouf plouf!
Reply

Marsh Posté le 22-01-2013 à 15:16:56    

Notes que pour savoir si c'était la solution adaptée à ton pb, il nous aurait fallu avoir le code complet de ta fonction et de son contexte d'appel.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-01-2013 à 15:24:43    

Finalement je reviens car ça ne me va pas.   :/

 

L'idéal c'est que je fasse une ArrayList d'ArrayList d'entiers. Le but c'est de pouvoir travailler dessus dynamiquement. Hors avec les tableaux d'ArrayList c'est statique.

 

Ma base de départ c'est donc :

Code :
  1. ArrayList<ArrayList<Integer>> liste=new ArrayList<ArrayList<Integer<>();
 

Et après je peux travailler sur chaque ArrayList d'entiers que j'ajoute :

Code :
  1. ArrayList<Integer> list1=new ArrayList<Integer>();
  2.    ArrayList<Integer> list2=new ArrayList<Integer>();
  3. liste.add(list1);
  4. liste.add(list2);
  5. list1.add(8);
 

Tout cela fonctionne bien, hormis que je veux incrémenter le nom de mes listes automatiquement dans le programme, avec l'appel d'une fonction ajoutListe() par exemple. Soit ça se fait automatiquement dans la fonction, soit au pire en mettant le nom en argument de la future liste.

 

Et là je bloque pour la création automatique des noms d'Arrayliste. Ca serait si simple de faire comme j'ai écrit au début String s+compteur, mais non pas possible.     :fou:

 

Edit : Et le code je ne peux pas te l'afficher car de construire quelque chose j'aime bien avoir mes outils et briques prêts.  :D Et là il me manque clairement un outil.  :D :D


Message édité par damtoul le 22-01-2013 à 15:31:03

---------------
Plouf plouf!
Reply

Marsh Posté le 22-01-2013 à 15:50:00    

Il n'y a pas de variable "nom d'objet" en java.
 
Les mettre dans une Hashmap avec ta String ("nom"+compteur)  
en key et la List en value?
 

Reply

Marsh Posté le 22-01-2013 à 16:04:29    

Hashmap pas encore vu en cours donc je ne suis pas sensé m'en servir.
 
Si aucune solution simple n'existe je verrai avec le prof, tant pis.   :D


---------------
Plouf plouf!
Reply

Marsh Posté le 22-01-2013 à 16:35:01    

Citation :

Le but c'est de pouvoir travailler dessus dynamiquement. Hors avec les tableaux d'ArrayList c'est statique.

D'ou mon commentaire

Citation :

(ou une pile d'arraylist si tu ne sais pas combien il y en aura en tout)

J'avais dit pile, car en fait tu as juste besoin d'un conteneur dont les éléments sont indexés par un entier qui ne change pas au fur et a mesure de tes ajouts, mais si tu préfères un autre niveau d'ArrayList, pourquoi pas.

 

Un truc dans ce genre la? (ça fait un bout de temps que j'ai pas touché au java, la je transpose du C++ ou ça serait plus simple car j'aurais droit aux [])
ArrayList<ArrayList<Integer>> liste=new ArrayList<ArrayList<Integer<>>();
liste.add(cpt, new ArrayList<Integer>()); // et si ça passe pas direct, on passe par un ArrayList<Integer> temporaire.
liste.get(i).add(j, num); pour ajouter num a la j-éme position de la i-eme liste (modulo +1 si le premier indice d'une  liste java est 0)
Bref tu utilises les listes liste.get(i) en lieu et place de tes arraylists nom+i. Tu vois le principe.

 

A+,


Message édité par gilou le 22-01-2013 à 18:23:08

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-01-2013 à 17:03:20    

Ouaip je vois le principe et ça me semble très bien!
Dès que je peux je teste ça et je te fais le retour.
 
Merci beaucoup pour tes conseils.    :jap:  
(et oui le premier indice d'une liste java est 0).


---------------
Plouf plouf!
Reply

Marsh Posté le 24-01-2013 à 10:41:08    

Gilou et Willy merci pour vos conseils.     :jap:  
 
J'ai réussi à faire ce que je voulais : gérer des ensembles d'entiers à partir d'un menu (création, modif, affichage, concaténation, analyses).
 
En lisant vos conseils et après discussion avec mon prof qui ne comprenait pas trop ce que je voulais dire/faire, en fait je m'étais complètement fourvoyé. Comme dit Willy les objets n'ont pas de nom en java, il suffit de les créer puis de les appeler par leur indice avec des get(i) pour ensuite travailler dessus.
 
Le code en lui-même n'a pas grand intérêt, je ne le posterai que si quelqu'un est intéressé.
 
Encore merci, j'ai progressé et appris et compris plein de choses.     :jap:  :sol:


---------------
Plouf plouf!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed