ArrayList Bidimencionales

Iniciado por cyberserver, 19 Diciembre 2010, 21:50 PM

0 Miembros y 1 Visitante están viendo este tema.

cyberserver

. Hola amigos.

Estoy haciendo pruebas utilisando ArrayList, pero caramba solo he podido hacer Arrays Unidimencionales.


Existe la forma de Realizar uno Bidimencional (Matriz).

encontre que acoplando los objetos, algo parecido a esto:

Código (java) [Seleccionar]

       ArrayList A1=new ArrayList();
    ArrayList A11=new ArrayList();
 
      A1.add(A11);

      A1.set(0,A11.add("Hola en 1.1"));
    A1.set(0,A11.add("Hola en 1.2"));
    A1.set(0,A11.add("Hola en 1.3"));

   


Pero como puedo referirme para poder ver los valores de un elemento de A1 y de A11 a la ves???

como si fuera
Código (java) [Seleccionar]

String  Valor = A1[0][3];


Existe alguna forma de Hacerlo al mismo tiempo sin tener que hacerlo independientemente como

Código (java) [Seleccionar]

A1.get(0);
A11.get(0);



Existe una forma mas sencilla de anidarlas los ArrayList? para no tener que declarar el segundo objeto A11 primero y luego usarlo agregandolo a A1.add

Esto lo digo pues si quiero colocar A11 dentro de Cada A1(0),A1(1).....A1(n) pues tendria que Declarar muchos objetos similares a A11, haciendo un buen de objetos que consumirian memoria...  :huh: :huh: :huh:  :rolleyes: :rolleyes:
Código (java) [Seleccionar]

       ArrayList A1=new ArrayList();
    ArrayList A11=new ArrayList();
       ArrayList A12=new ArrayList();
     
      A1.add(A11);
      A1.add(A12);

      A1.set(0,A11.add("Hola en 1.1"));
    A1.set(0,A11.add("Hola en 1.2"));
    A1.set(0,A11.add("Hola en 1.3"));

       A1.set(1,A12.add("Hola en 2.2"));
    A1.set(1,A12.add("Hola en 2.1"));
    A1.set(1,A12.add("Hola en 2.3"));






sclub

#1
Buenas!!

Has probado así¿?
Código (java) [Seleccionar]
ArrayList[][] array = new ArrayList[5][5];

array[0][0].add("holaa");
....
array[4][4].add("ultimo");


A mí me funciona sin problemas...


Saludos!

EDIT /---
Aver... nose para que querrás el codigo, pero eso lo podrias hacer así:
Código (java) [Seleccionar]

ArrayList[] array = new ArrayList[5];

array[0].get(index);


No es necesario, por lo que deduzco aquí, utilizar 2 dimensiones, con una basta, pues el ArrayList ya te proporciona 'una dimension'... puedes meter dentro todo lo que quieras y tiene su index...
... because making UNIX friendly is easier than debugging Windows.

sapito169

#2
cuando algien trata de atornillar algo usa un destornillador no un martillo  >:(
primero deviste leer para que sirve el array list

estoy harto de java en . net tiene una inplementecacion de tabla muy potente pero nosotros solo tenemos un tablemodel pero en la practica usamos defaultablemodel

Código (java) [Seleccionar]

TableModel model = new DefaultTableModel(2, 2);
model.setValueAt("celda 0:0", 0, 0);
model.setValueAt("celda 1:1", 1, 1);
model.setValueAt("celda 0:1", 0, 1);
model.setValueAt("celda 1:0", 1, 0);

System.out.print(model.getValueAt(1, 1));


ArrayList[][] array = new ArrayList[5][5];
es un arreglo bidimencional pero todos los elementos son ArrayList lo cual es una solucion muy rara por cada ArrayList puede tener varios elementos lu cual es por decirlo menos muy raro te acepta cosas como

Código (java) [Seleccionar]

array[0][0].add("holaa");
array[0][0].add("ultimo");

cyberserver

Pues muchas gracias por su informacion.

Sclub... creo que los codigos que recomiendas no funcionan o no se si los entendi mal, mira aqui los escribi de esta manera:
Código (java) [Seleccionar]

import javax.swing.*;
import java.util.*;

public class Anidado {

    public static void main (String[] args) {
   
    ArrayList[] array = new ArrayList[5];
   
    array[0].add("Valor0.0");
    array[0].add("Valor0.1");
   
    array[1].add("Valor1.0");
    array[1].add("Valor1.1");
   
   
JOptionPane.showMessageDialog(null,"Valor " + array[0].get(1));
   
   
}
   
}


y me retorna el siguente error:
Citar
--------------------Configuration: <Default>--------------------
Exception in thread "main" java.lang.NullPointerException
    at Anidado.main(Anidado.java:10)

Process completed.


El error : No esta bien la declaracion del Objeto ArrayList.... por que ?
Citar
Los constructores para poder crear un Objeto de Tipo ArrayLis son los siguientes:
Wikipedia
ArrayList tiene varios constructores, dependiendo de cómo necesitemos construir el ArrayList . Los siguientes dos constructores nos ayudarán a entenderlo:
•   ArrayList() construye un ArrayList con capacidad cero por defecto, pero crecerá según le vayamos añadiendo:
ArrayList al = new ArrayList();
•   ArrayList(int initialCapacity) construye un ArrayList vacío con una capacidad inicial especificada:
ArrayList al2 = new ArrayList(5);


Tambien en el codigo que colocaste:
Código (java) [Seleccionar]

ArrayList[][] array = new ArrayList[5][5];

array[0][0].add("holaa");
....
array[4][4].add("ultimo");


Yo que sepa no existen ArrayList[][] ni la Bidimecionalidad (Matrizes), ya que unas de las Desventajas que tiene ArrayList con relacion a los Arrays normales son las siguentes :
Citar
•   Se puede establecer el límite inferior de Array, pero el límite inferior de ArrayList o List siempre es cero.
•   Array puede tener varias dimensiones, mientras que ArrayList o List siempre tienen una dimensión exactamente.
•   Un objeto Array de un tipo específico distinto de Object ofrece mejor rendimiento que ArrayList ya que los elementos de ArrayList son de tipo Object y, por lo tanto, las conversiones boxing y unboxing se producirán normalmente al almacenar o recuperar un tipo de valor. Sin embargo, List puede presentar un rendimiento similar al de una matriz del mismo tipo siempre que no se requiera ninguna reasignación, es decir, siempre que la capacidad inicial sea una aproximación acertada del tamaño máximo de la lista.


Segun entiendo la unica forma de crear una matriz o un ArrayList con mas de una dimencion es anidando ArrayList....

NOTA: Perdon se me olvido comentar que la unica razon por que pretendo utilizar ArrayList y no simplemente un Array es por la capacidad de estos objetos de crecer y remover elementos DINAMICAMENTE en tiempo de ejecucion (Utiliza Tipado Dinamico)


En cuanto a lo que dice. Sapito voy a tratar de anlizarlo... muchas Gracias :)







sclub

Cierto, se me paso. Aunque crees el array igual se deberian crear los objetos.
CitarArrayList[] array = new ArrayList[5];

array[0] = new ArrayList();
array[1] = new ArrayList();


array[0].add("Valor0.0");
array[0].add("Valor0.1");
array[1].add("Valor1.0");
array[1].add("Valor1.1");

Nose si es la mejor manera de tratar con ArrayList, pero hace poco lo probe y si lo 'organizas' bien se puede tratar con ello.

Lo del TableModel no lo sabia, pero lo mirare aver como va. ;)
... because making UNIX friendly is easier than debugging Windows.