# ArrayList (mehrdimensional)



## v0id (29. Nov 2006)

Hallo zusammen,

ich hab grad ne ganze weile alle möglichen foren durchforstet und bin nun bei dem hängen geblieben da es hier schon ein eintrag gibt der in die Richtung geht.

Ich soll in meinem kleinen übungsprojekt ein eindimensionales und ein zweidimensionales array erstellen.
Da ich es direkt mal richtig machen möchte habe ich ArrayList benutzt um das eindimensionale zu erstellen und schon in die klasse die passenden funktionen eingefügt.

Nun hab ich aber leider das Problem mit den zweidimensionalen Array.

im Prinzip möcht ich wie folgt auf die felder zugreifen können.

matrix.get(0).get(1);
matrix.get(0).add("was auch immer");
matrix.add("oder dies und das").get(3);

sowas in der art hab ich schon in foren gesehen leider fehlt mir noch ein wenig das wissen wie ich das nun erstelle.

Welches ist das basisobjekt und wie füge ich die variablen array ein?

ein kurzes Beispiel wie man das implementiert und ggf nutzt wäre top und würde mir sicherlich endlich weiterhelfen.

ich freu mich schon auf eure antworten

gruß

v0id


----------



## Campino (29. Nov 2006)

Also: Ein mehrdimensionaler Array ist etwas anderes als eine ArrayList, die eine ArrayList enthält!! gerade für ein Übungsprojekt für Schule oder ähnliches würde ich einen echten Array verwenden!   Überhaupt macht die Verwendung von ArrayLists keinen Sinn, wenn von vorneherein klar ist, wieviele Elemente darin stehen sollen. 

Aus deinem Beitrag kann ich nur schwer abschätzen, wieviel du schon über Java weißt. Ich werde jetzt möglichst einfach darstellen, wie du eine ArrayList, die ArrayLists enthält, erstellst. Wenn du das nicht verstehst, ist das ein deutliches Zeichen dafür, dass du erst die einfachere Variante mit Arrays machen solltest. 

Also: 
1) Du musst ein Objekt vom Typ ArrayList erstellen, diesem kannst du über Generics mitteilen, dass es ArrayLists enthalten soll. Generics sind Typbezeichner in spitzen Klammern hinter dem Klassennamen. 
2)Danach musst du, am besten in einer Schleife, weitere ArrayLists per add() in die ArrayList einfügen. Auch dieses Arraylists sollten per Generic erfahren, was sie erhalten. Hier ist der Datentyp, den du speichern möchtest, gefragt. 
3)Über die get-Methode der ersten ArrayList, bekommst du jetzt eine der ArrayLists. Über deren get-Methode den Inhalt eines Feldes, wie in deinem Codebeispiel. Nur die dritte Zeile deines Codebeispiels KANN garnicht gehen, weil add einen boolean zurückgibt, dieser hat keine Funktion get(). 

so, ich hoffe das hilft dir, 
campino


----------



## v0id (30. Nov 2006)

Hi,

danke dir das hat mir auf jedenfall den richtigen ansatz gegeben. Ich bin noch ein Anfänger in Sachen Java aber da ich mir Klassen erstellen möchte die mir ggf später auch noch nützen wollte ich das alles möglichst variable halten.

Ich musste mich nur ein wenig in die generics einlesen und auch den Aufbau den du mir geschildert hast verstehen. Danke sehr.

Damit ggf andere nochwas mal davon haben hier mein Code


```
import java.util.*;

public class Start 
{

	public static void main(String[] args) {


		// eine arraylist erstellen. diese wird wiederrum eine arraylist enthalten
                // und in der werden anschliessen Integer gespeichert.. die Generics ersparen eine menge cast arbeit
		ArrayList <ArrayList<Integer>> a = new ArrayList <ArrayList<Integer>> ();

                // adden von neuen arraylists in die basis liste, die neuen arraylists sollen integer erhalten
                // man könnte sich das vorstellen wie das einfügen von zeilen
		for (int x = 0; x <= 10; x++)
		{
			a.add(new ArrayList <Integer>());
		}
		
                // hier fügt man sozusagen dann in eine zeile ein nächsten buchstaben hinzu (oder hier halt eine zahl)
		a.get(0).add(1);
		a.get(0).add(2);
		a.get(1).add(23);
		a.get(1).add(69);
		a.get(1).add(18);
		a.get(8).add(42);
		
                // ausgabe, fast wie bei normalen zweidimensionalen arrays
                // ich werde mich noch eine passende funktion zum befüllen schreiben
		System.out.println("Feld [0][0]: " + a.get(0).get(0));
		System.out.println("Feld [0][2]: " + a.get(0).get(1));
		System.out.println("Feld [1][0]: " + a.get(1).get(0));
		System.out.println("Feld [8][0]: " + a.get(8).get(0));
		System.out.println("a.get(0) hat: " + a.get(0).size() + " Felder.");
		System.out.println("a.get(1) hat: " + a.get(1).size() + " Felder.");

	}
}
```



> *Ausgabe: *
> Feld [0][0]: 1
> Feld [0][2]: 2
> Feld [1][0]: 23
> ...




So ich hoffe meine kommentare sind verständlich und helfen ggf den nächsten..

gruß

v0id


----------



## v0id (30. Nov 2006)

ach da fällt mir nochwas ein, ich hatte einige probleme mit den generics bis mir ein mitarbeiter gezeigt hat das ich doch eigentlich eine java 5 version brauche dafür, davor gabs ne menge fehlermeldungen..


----------

