Como ya se ha respondido, puede crear un ArrayList de String Arrays como @ Péter Török escrito;
//Declaration of an ArrayList of String Arrays
ArrayList<String[]> listOfArrayList = new ArrayList<String[]>();
Al asignar diferentes matrices de cadenas a este ArrayList, la longitud de cada matriz de cadenas será diferente.
En el siguiente ejemplo, se agregaron 4 Array of String diferentes, sus longitudes son variables.
String Array #1: len: 3
String Array #2: len: 1
String Array #3: len: 4
String Array #4: len: 2
El código de demostración es el siguiente;
import java.util.ArrayList;
public class TestMultiArray {
public static void main(String[] args) {
//Declaration of an ArrayList of String Arrays
ArrayList<String[]> listOfArrayList = new ArrayList<String[]>();
//Assignment of 4 different String Arrays with different lengths
listOfArrayList.add(new String[]{"line1: test String 1","line1: test String 2","line1: test String 3"} );
listOfArrayList.add(new String[]{"line2: test String 1"} );
listOfArrayList.add(new String[]{"line3: test String 1","line3: test String 2","line3: test String 3", "line3: test String 4"} );
listOfArrayList.add(new String[]{"line4: test String 1","line4: test String 2"} );
// Printing out the ArrayList Contents of String Arrays
// '$' is used to indicate the String elements of String Arrays
for(int i = 0; i < listOfArrayList.size(); i++) {
for(int j = 0; j < listOfArrayList.get(i).length; j++)
System.out.printf(" $ " + listOfArrayList.get(i)[j]);
System.out.println();
}
}
}
Y la salida es la siguiente;
$ line1: test String 1 $ line1: test String 2 $ line1: test String 3
$ line2: test String 1
$ line3: test String 1 $ line3: test String 2 $ line3: test String 3 $ line3: test String 4
$ line4: test String 1 $ line4: test String 2
Además, notifique que puede inicializar una nueva matriz de Sting como se muestra a continuación;
new String[]{ str1, str2, str3,... }; // Assuming str's are String objects
Así que esto es lo mismo con;
String[] newStringArray = { str1, str2, str3 }; // Assuming str's are String objects
He escrito esta demostración sólo para demostrar que no es el ArrayList objeto, todos los elementos son referencias a diferentes instancias de la cadena matrices, por tanto, la longitud de cada uno de matrices de cadenas no tienen que ser los mismos , tampoco es importante.
Una última nota: Será una buena práctica usar ArrayList dentro de una interfaz de lista, en lugar de la que ha utilizado en su pregunta.
Será mejor utilizar la interfaz de Lista como a continuación;
//Declaration of an ArrayList of String Arrays
List<String[]> listOfArrayList = new ArrayList<String[]>();
+1 estuvo de acuerdo. Además, generalmente debe declararse final. Hay muy pocos casos de uso para volver a vincular una variable de contenedor. – dsmith
¿Por qué es esto así? – athena
@athena: Vea la primera pregunta y su respuesta en esta entrevista de Erich Gamma: http://goo.gl/fz9G – missingfaktor