Matriz dinamico

srchals
19 de Marzo del 2003
¿ Alquien sabe como hacer una matriz dinamica ?. Se que existe la clase Vector, pero hay alguna clase para crear una matriz dinámica.

Luis
19 de Marzo del 2003
Hi srchals.
A lo que tu llamas una matriz dinamica es realmente lo que hace el Vector. En java tienes la posibilidad de crear todo tipo de arrays o matrices, pero exceptuando el vector ninguna de ellas (que yo sepa) es dinamica, con lo que tienes que redimensionarlo cada vez que añades un elemento si excede del tamaño que has seleccionado. Si miras los fuentes del vector veras que lo que realmente hace es eso. Cada vez que añades un elemento fuera de los limites (un numero mayor de elementos del indicado al crearlo) crea un nuevo array y lo carga con lo anterior mas el nuevo elemento. Espero esto te responda un poco a tu pregunta. Un saludo.

srchals
19 de Marzo del 2003


Un ejemplo parecido a lo que quiero conseguir es :

//Creo un Vector que almacenara un conjunto de vectores
Vector list1 = new Vector();

//Creo un Vector temporal
Vector tempList = new Vector();

//Creo una Cadena temporal
String tempNombre = "";


//Introducir numeros en el vector list1
for(int cont = 0; cont < 2; ++cont)
{
tempList.add("Numero " + cont + "1");
tempList.add("Numero " + cont + "2");
tempList.add("Numero " + cont + "3");

//Añado el vector tempList a la posicion "cont" del vector
list1.add(cont, tempList);

//Limpio el contenido del vector tempList, para poder añadir nuevos datos
tempList.clear();
}

/*Me gustaria visualizar
Numero 01
Numero 02
Numero 03
Numero 11
Numero 12
Numero 13 */


//Visualizar los valores de list1
for(int cont=0; cont < list1.size(); ++cont)
{

//Obtiene la lista que corresponde a la posicion "cont" de list1
tempList = (Vector) list1.get(cont);

System.out.println("tTamaño de tempList " + cont + " --> " + tempList.size());

//Visualiza los valores
for(int cont2=0; cont2 < tempList.size(); ++cont2)
{
tempNombre = (String) tempList.get(cont2);
System.out.println("Numeros de " + cont + " -> " + tempNombre);
}
}
-----------

Al visualizar no muestra nada y creo que es debido a que el contenido de la lista (list1) apunta al vector temporal (tempList). Me imagino que debe haber una clase que permita realizar esto mas facilmente.

Gracias.

Luis
19 de Marzo del 2003
Pasa exactamente como tu dices. Te digo la forma de arreglarlo. Es solo modificar una linea.
Cuando limpias el contenido de templist.

tempList.clear();

tan solo has de sustituirlo por esto.

tempList = new Vector();

y ya tienes solucionado el problema, tienes una construccion nueva del vector temporal dentro del vector principal sin que interfieran una con la otra.
Un saludo y animo.