Redimensionar un array en Java a saco con el java
#1
Publicado 21 August 2004 - 07:57 AM
podeis hecharme una mano con esto?
¿Puedo crear un array dinámico en Java?
Tengo que crear una tabla que contenga un array de objetos. Las columnas las se, son fijas, pero las filas no, tanto pueden ser 400 como 500. De momento lo tengo hecho con un array fijo:
Object[][] contenido_tabla = new Object[1000][9];
Pero si meto 500 elementos me sobran 500 filas en blanco. Me gustaría que se pudiera hacer algo asi:
Object[][] contenido_tabla = new Object[][9];
Y añadir elementos al array. ¿Como puedo hacedrlo? He visto por allí algo de Vectores pero no me acabo de aclarar.
640 Mb RAM - Airport
----
MacBook Core 2 Duo 2Ghz
2 gb RAM + Hd 120 Gb
----
Power Mac G4 - 400 Mhz - 640 Mb RAM
HD FW Lacie 80 GB - OS 9.2
#2
Publicado 21 August 2004 - 12:46 PM
Pero quizá te sea mas útil utilizar otro tipos de contenedors, como Vectores, Mapas, ....
Saludos
#3
Publicado 21 August 2004 - 05:35 PM
En qué consisten los vectores?. Puedes mostrarme de una forma rápida y simple como implementarlos.
Muchas gracias.
640 Mb RAM - Airport
----
MacBook Core 2 Duo 2Ghz
2 gb RAM + Hd 120 Gb
----
Power Mac G4 - 400 Mhz - 640 Mb RAM
HD FW Lacie 80 GB - OS 9.2
#4
Publicado 22 August 2004 - 01:16 PM
También podrias redimensionar un array, creando uno nuevo, haciendo una assignación i eliminando el viejo. Però és un poco chapucero.
Respecto a los otros tipus de contenedores de datos, tienes:
- array: Tamanyo fijo, però de acceso muy ràpido
- Vector: Tamanyo variable, és un array que al aumentar, crea
una copia en un array mayor. java.util.Vector
- BitSet: Vector de bits. Bueno en cuanto a tamanyo, però lento
en el acceso.
- Stack: Pués la pila de toda la vida.
- Hashtable: Pués un mapa, un conjunto de datos referenciados por
una clave (manual o automàtica) que acelera la
búsqueda de un dato. Ideal en buscas aleatorias.
- Set: Variante
- List: Variante
- Map: Variante
Todas estas classes heredan de la classe Collection que ofrece la funcionalidad bàsica para todas ellas.
Te recomiendo que tengas a mano la documentación de las API's de Java para tener a mano toda la potència de su framwork. Seguro que entonces encuentras la mejor classe para tus necessidades o té heredas una nueva que se adapte mejor a tus necesidades.
Salut.
#5
Publicado 27 August 2004 - 01:15 AM
Object[][] contenido_tabla = new Object[9][];
Esta línea de código crearía un array unidimensional capaz de albergar 9 arrays de objetos. Es un poco lioso de explicar, porque en realidad en Java todos los arrays son unidimensionales, sólo que nada te impide crear un array de otro objeto array. Bueno que me parece que lo estoy liando aún mas.
Ahora lo que tendrías que hacer sería ir creando los nueve arrays de objetos unidimensionales del tamaño que necesites e ir asignándoselos a tu array de arrays
De todas formas habría muchas formas de abordar este problema, así que si fueses algo más específico, sobre todo en lo que concierne a la introducción de los datos (objetos) en el array, igual podría darte una respuesta más concreta.
#6
Publicado 27 August 2004 - 07:20 AM
Creo otro array con +1 de filas y vuelco el otro. Un poco chapuzas, como dice Xin Xic, pero funciona.
640 Mb RAM - Airport
----
MacBook Core 2 Duo 2Ghz
2 gb RAM + Hd 120 Gb
----
Power Mac G4 - 400 Mhz - 640 Mb RAM
HD FW Lacie 80 GB - OS 9.2
#7
Publicado 27 August 2004 - 10:34 AM
A demás, no lo hace de 1 en 1 sinó de 10 en diez, con lo que se reduce el trabajo de assignación. Fijate que el intervalo de 10 puede modificarse segun tus necesidades, al crear el vector.
Salut,
Xin Xic
Este tema ha sido editado por Xin Xic: 27 August 2004 - 10:36 AM
#8
Publicado 27 August 2004 - 12:19 PM
mi granito de arena: los arrays no se redimensionan...
Lo que puedes hacer, una vez sepas el tamaño es copiarlo a uno más pequeño:
http://java.sun.com/j2se/1.4.2/docs/api/ja...,%20int,%20int)
o si prefieres, como te han comentado... una Collection quizá te vaya mejor.
un saludo
#9
Publicado 27 August 2004 - 05:57 PM
Salut
#10
Publicado 29 August 2004 - 08:24 PM
Cita
Bueno, como dice Xin Xic, lo mejor en estos casos es usar un Vector, o en su defecto un ArrayList (si no vas a utilizar hilos en el programa).
Si lo quieres niquelar














