# 2D ArrayList



## Elendil (17. Dez 2011)

Also ich habe eine Excel Tabelle die ich in mein Programm einlesen muss. Diese sieht beispielsweise so aus:

  0 1 2 3 4 5
0 
1
2
3
4
5

Die Anzahl der Spalten und Zeilen ist unbekannt und die Zeilenzahl kann je nach Spaltennummer varieren.

Habe jetzt vor das Ganze mittels ArrayList einzulesen und dann mit einem TableModel in einer Tabelle darzustellen...

Das eigentliche Problem ist nun aber das eigentliche Einlesen...

Hatte mir das erstmal folgendermaßen vorgestellt:

```
ArrayList<String> zeile = new ArrayList<String>();			
ArrayList<String> spalte = new ArrayList<String>();


for(int i=0;i<spaltenzahl;i++){
   
	if(excelSpalte[i].equals("a")){      //gewünschte Spalte in der Exceltabelle
		int zeilenzahl = sheet.getRowHeight(0);   //Zeilenzahl der ersten Spalte (a)
		for(int j=0;j<zeilenzahl;j++){
		     Cell cell = sheet.getCell(0, j);         //Referenz auf Zelle j in der ersten Spalte
		     zeile.add(j, cell.getContents());      //Holt den Inhalt und speichert ihn in der ArrayList zeile
		     spalte.addAll(i,zeile);     //Speichert die Zeile in der ArrayList spalte
		}

         if(excelSpalte[i].equals("b")){      //gewünschte Spalte in der Exceltabelle
		 int zeilenzahl = sheet.getRowHeight(1);   //Zeilenzahl der zweiten Spalte (b)
		 for(int j=0;j<zeilenzahl;j++){
		     Cell cell = sheet.getCell(1, j);         //Referenz auf Zelle j in der zweiten Spalte
		     zeile.add(j, cell.getContents());      //Holt den Inhalt und speichert ihn in der ArrayList zeile
		     spalte.addAll(i,zeile);     //Speichert die Zeile in der ArrayList spalte
		}
	}
```

Das ist nur ein Ausschnitt. In meinem Programm wird die geht das dann bis Spalte z.
Das Problem ist nun, dass der Inhalt von spalte in der zweiten Schleife jedesmal überschrieben wird...

Wie kann ich das lösen?


----------



## Final_Striker (17. Dez 2011)

Du hast keine 2D Liste sondern einfach nur nur 2 einfache Listen.

Was du brauchst eine eine 
	
	
	
	





```
List<List<String>> liste= new ArrayList<ArrayList<String>>();
```


----------



## Elendil (17. Dez 2011)

Mit

```
List<List<String>> liste= new ArrayList<ArrayList<String>>();
```

bekomme ich einen Fehler...

Meinst du vielleicht:


```
ArrayList<ArrayList<String>> liste= new ArrayList<ArrayList<String>>();
```

?

Und würde die Zuweisung dann so aussehen?


```
liste.add(j, new ArrayList<String>().add(j, cell.getContents()));
```


----------



## ARadauer (17. Dez 2011)

welchen fehler?


----------



## Elendil (17. Dez 2011)

Type mismatch: cannot convert from ArrayList<ArrayList<String>> to List<List<String>>


----------



## Gast2 (17. Dez 2011)

```
java.util.List
```
 statt 
	
	
	
	





```
java.awt.List
```
 importieren.


----------



## Elendil (17. Dez 2011)

Hatte vorher schon
import java.util.List;
importiert.
Daran kanns also nicht liegen..


----------



## Final_Striker (17. Dez 2011)

Elendil hat gesagt.:


> Und würde die Zuweisung dann so aussehen?




```
List<List<String>> tabelle= new ArrayList<List<String>>();

for( über alle Zeilen){

   List<String> zeile = new ArrayList<String>();
   
   for(über alle Spalten){

       zeile.add(wert);
   }

   taelle.add(zeile);
}
```


----------

