Crear ArrayList

Tengo un array del tipo String[][]. Lógicamente al ser estático no me gusta nada. Estoy buscando como hacer un arraylist que contenga como objeto un array simple del tipo String[].
¿Es posible? ¿Podrías decirme como puedo realizarlo?

1 respuesta

Respuesta
1
Puedes hacerlo así:
ArrayList miArrayList = new ArrayList();
miArrayList.add(new String[]{"a","b","c"});
...
miArrayList.add(new String[]{"u","v","w"});
Pero estoy seguro que este no es tu problema ¿verdad? Usas java 1.4 o 1.5
Buenas, gracias por tu respuesta
Utilizo la version 1.6 de Java. Imagino que con tu respuesta esto serio válido:
String miString[] = new String[3];
ArrayList miArrayList = new ArrayList();
miString = {"a","b","c"};
miArrayList.add(miString);
¿Seria lo mismo no?
Y abusando un poco de ti, ¿sabes si se puede hacer un método que sea return miArrayList?
Gracias de nuevo.
Puedes hacer por ejemplo
public static ArrayList getMiArrayList(){
String miString[] = new String[3];
ArrayList miArrayList = new ArrayList();
miString = {"a","b","c"};
miArrayList.add(miString);
return miArrayList;
}
¿Te vale?
Creo que si. Mañana lo pruebo y te comento.
De nuevo gracias
Buenas, lo he intentado pero me surge el siguiente error (el ultimo post que me enviaste esta perfecto), al realizar un segundo add del array en el arrayList, machaca lo que había del primer add y solo guarda lo ultimo añadido pero duplicado. Te muestro el código:
public ArrayList getMiarrayList()
{
ArrayList miArrayList = new ArrayList();
try
{
String miString[] = new String[3];
String auxi[] = new String[3];
miString[0] = "a"; miString[1] = "b"; miString[2] = "c";
miArrayList.add(miString);
miString[0] = "y"; miString[1] = "x"; miString[2] = "z";
miArrayList.add(miString);
int tamanho = miArrayList.size();
log.escribirLog("tamanho arraylist: "+tamanho, operario);
for (int i=0; i<tamanho; i++)
{
auxi = (String []) miArrayList.get(i);
log.escribirLog("Pos "+i+", elemento 0: "+auxi[0], operario);
log.escribirLog("Pos "+i+", elemento 1: "+auxi[1], operario);
log.escribirLog("Pos "+i+", elemento 2: "+auxi[2], operario);
}
}
catch(Exception e)
{
log.escribirLog("error: "+e.getMessage(), operario);
}
return miArrayList;
}
log.escribirLog es un metodo que hice para escribir en un fichero de texto, el parametro operario es para el nombre del fichero, no tiene importancia aqui. La salida deberia ser:
Pos 0, elemento 0: a
Pos 0, elemento 1: b
Pos 0, elemento 2: c
Pos 1, elemento 0: y
Pos 1, elemento 1: x
Pos 1, elemento 2: z
pero es:
Pos 0, elemento 0: y
Pos 0, elemento 1: x
Pos 0, elemento 2: z
Pos 1, elemento 0: y
Pos 1, elemento 1: x
Pos 1, elemento 2: z
¿Alguna idea?
Es por la orientación a objetos, no por el add del array. Es tan sencillo como hacer esto
String miString[] = new String[3];
String auxi[] = new String[3];
miString[0] = "a"; miString[1] = "b"; miString[2] = "c";
miArrayList.add(miString);
miString = new String[3]; //Esto es lo que falta
miString[0] = "y"; miString[1] = "x"; miString[2] = "z";
miArrayList.add(miString);
Lo que ocurre es que si tienes un String y le cambias su contenido sigues teniendo el mismo String y el add del arraylist lo detecta y por eso no lo mete. Es necesario crear uno nuevo.
Es un fallo típico de la orientación a objetos.
Hablando en orientación a objetos. Es como si tienes un perro y le cambias todas sus características, el perro es el mismo pero con otras características.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas