2013-06-06 14 views
12

Voglio creare un array 2D che ogni cella sia un ArrayList!Come creare un ArrayList 2D in java?

Considero queste definizioni, ma non posso aggiungere nulla a loro queste definizioni sono vere ?!

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

o

ArrayList[][] table = new ArrayList[10][10]; 

//table.add?????? 

Please help me

+0

Questo vi aiuterà a http://stackoverflow.com/questions/10768170/how-do-i-declare-a-2d-string-arraylist – newuser

+0

Ciao. Il titolo della domanda non è coerente con il suo contenuto. Vuoi una matrice 2D di ArrayList (qualcosa come 3D, finalmente) o una ArrayList 2D (una ArrayList di ArrayList)? Se chiedi questo per i tuoi compiti, potresti scrivere la domanda originale. Infine, è assolutamente necessario dichiarare ArrayList. Puoi usare la lista intead? –

+0

Oh e dichiarate 2D ArrayList of String nella prima parte della vostra domanda. È corretto che devi inserire String nella tua ArrayList interna? –

risposta

27

Voglio creare una matrice 2D che ogni cellula è una lista di array!

Se si desidera creare un 2D gamma di ArrayList .Poi si può fare questo:

ArrayList[][] table = new ArrayList[10][10]; 
table[0][0] = new ArrayList(); // add another ArrayList object to [0,0] 
table[0][0].add(); // add object to that ArrayList 
+1

Perché è il downvote? – NINCOMPOOP

+1

Rilevo un errore del compilatore qui .... Btw, non ti ho minimizzato. –

+0

Errore del compilatore solo se 'arrayListObject' non è un oggetto' ArrayList'. La tabella – NINCOMPOOP

28

Il modo migliore è quello di utilizzare List con in List

List<List<String>> listOfLists = new ArrayList<List<String>>(); 
2
ArrayList<String>[][] list = new ArrayList[10][10]; 
list[0][0] = new ArrayList<>(); 
list[0][0].add("test"); 
20

prima di tutto, quando si dichiara una variabile in Java, si dovrebbe dichiararla utilizzando le interfacce anche se si specifica l'implementazione durante l'istanziazione

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

deve essere scritto

List<List<String>> listOfLists = new ArrayList<List<String>>(size); 

Poi si dovrà creare un'istanza di tutte le colonne del vostro 2d serie

for(int i = 0; i < size; i++) { 
     listOfLists.add(new ArrayList<String>()); 
    } 

E si intende utilizzare in questo modo:

listOfLists.get(0).add("foobar"); 

Ma se si vuole veramente "creare un array 2D che ogni cella è una ArrayList! "

Quindi devi andare via ijkstra.

+0

non dovrebbe essere (Lista col: listOfLists)? –

+0

anzi :) sentiti libero di modificare – Gab

+1

Questo è solo falso, non puoi modificare la struttura di 'listOfLists' in questo modo! Stai iterando attraverso una struttura vuota, quindi 'for' non farà nulla e il seguente' get' genererà un'eccezione. –