# 2d Array übergeben



## luchs3 (1. September 2009)

Hi,
Ich muss ein 2d Array an eine Methode übergeben.
Jetzt habe ich das mit ArrayList und Array gemacht.
Sprich ArrayList.add(bla[]).

Funktioniert soweit auch, nur leider kann ich auf das Array in der Methode nicht mehr zugreifen.
Ich kann mit ArrayList.get(index) nur auf die erste Ebene zugreifen.
Ausgabe: [Ljava.lang.String;@462f8e9c

Wie kann ich das lösen?


----------



## mahe (1. September 2009)

ArrayList.get(index);
gibt Dir ein weiteres Array zurück auf das du folgendermaßen zugreifen kannst:

ArrayList.get(index1)[index2];

Du kannst aber auch ohne ArrayList mehrdimensionale Arrays machen:

String[][] array2d = new String[10][20];


----------



## zeja (1. September 2009)

Und wenn du wie ich denke Java 1.5 verwendest, kannst du auch angeben was in deiner Liste drin ist und mußt nicht casten:

ArrayList<String[]>


----------



## takidoso (2. September 2009)

Um ein Array welchen Typs auch immer einer Methode zu übergeben, würde ich keine ArrayList oder ähnliches dazwischen schalten!

Syntaktisch ginge es genauso wie mit 1 oder 3 dimensionalen Arrays:

```
class MyClass
{
    void meth1()
    {
         String [][] myStringArray = String[10][10];

         // befülle Array nach Lust und Laune

       meth2(myStringArray); 
    }

   void meth2(String[][] strings2D)
   {
        String[][] x = strings2D;
       
			for (String[]x1 : x)
			{
				for (String x2 :x1)
				{
					System.out.println(x2);
				}
			}
			
			for (int i=0; i<x.length; i++)
			{
				String[]x1 = x[i];
				for (int j=0; j<x1.length;j++)
				{
					String x2 = x1[j];
					System.out.println(x2);
				}
			}
			
			for (int i=0; i<x.length; i++)
			{
				
				for (int j=0; j<x[i].length;j++)
				{
					System.out.println(x[i][j]);
				}
			}  

}
```
in der letzten Schleife bin ich mir nicht sicher ob erst i und dann j oder andersherum genannt werden müssten. Probier's einfach aus.

Takidoso


----------



## luchs3 (2. September 2009)

Das problem ist, dass ich nicht auf den Inhalt der ArrayList zugreifen kann. Keine Ahnung warum.

Array kann ich in diesem Fall nicht verwenden, da ich die Größe beim initialisieren nicht weiß.

Hab das jetzt anders gelöst.
2. Dimension als String und dann gesplittet.
Hatte keine Zeit mehr -> Pfuschlösung, aber in diesem Fall egal.
Würde mich halt für die Zukunft interessieren.
Oder geht das vielleicht mit Vektoren besser?


----------



## takidoso (3. September 2009)

Jo, wenn man die Menge der Elemente noch nicht weis, hast Du recht ist eine wie auch immer geartete java.util.List sicher besser.
Ob mit ArrayList oder Vector ist egal!
_mahe_ hat eigetnlcih Dir schon längst die Antwort gegeben.
Wie sah denn Dein Code aus, als Du meintest an den Inhalt deiner ArrayList nicht ran kommen zu können? gab es eine Fehlermeldung?


----------

