# zweidimensionales Array erstellen



## Pennywise (24. Mrz 2005)

Hi,

schäme mich irgendwie wegen dieser Frage, komm aber nicht drauf.
Wie erstelle ich ein leeres zweidimensionales Array, dass kine feste Größe hat?
Und wie füge ich dann Daten hinzu?

Vielen Dank im Voraus.


----------



## meez (24. Mrz 2005)

Keine feste Grösse ist leider nicht möglich...
Mit fester Grösse:

```
String[][] array = new String[10][10];
```

Aber besser  ist sowieso du benutzt ein key-value Konstrukt, wie z.B. eine HashMap. (Das ist dann auch dynamisch)


----------



## Beni (24. Mrz 2005)

```
double[][] array; // << das ist leer

array = new double[10][]  // << jetzt hat es 10 leere Einträge

array[0] = new double[5];  // an erster Stelle stehen jetzt 5 0en

array[1] = new double[]{ 1, 2, 3 }; // an zweiter Stelle steht jetzt 1, 2, 3
```


----------



## Pennywise (24. Mrz 2005)

Okay, HashMap ist neu für mich.

Ein HashSet hab ich schon mal benutzt.
Da konnte ich sagen : hashSet.toArray();

Das klappte bei einem eindimensionalem array ohne feste Größe. Aber
wie läuft das mit der HashMap ? Kennt jemand nen guten Link in diesem Forum?


----------



## meez (24. Mrz 2005)

Eine HashMap besteht immer aus einem Schlüssel, und einem Wert...


```
//Neue HashMap
Map map = new HashMap();

//Etwas hinzufuegen
map.put("schluessel", "wert");

///Wert wieder  über den Schlüssel zurückholen
String w = (String) map.get("schluessel");
```

http://java.sun.com/j2se/1.3/docs/api/java/util/HashMap.html

Der Schluessel, sowie auch der Wert sind dabei vom Typ Objekt...(Eine HashMap kann also alles aufnehmen)


----------



## Pennywise (24. Mrz 2005)

Also Beni, nochmal langsam, komm nicht mit.

Folgendes Beispiel:

Hab ne SQL-Tabelle, mit unbekannt vielen Zeilen und vier Spalten.
Kenne aber trotzdem die Namen der gewünschten vier Spalten, und kann mir deren werte ausgeben lassen.

Die Werte will ich nun in einem zweidimensionalem array speichern.

Kann jedoch nicht schreiben: String[][] sqlArray = new String[10][4];
da ich nicht weiß wieviele Zeilen die Tabelle besitzt, da sie sich von 
Tag zu Tag erweitern kann, und ich diesen Aufruf bei jedem Programmstart 
ausführen muss.

Bekomm eine NullPointerException wenn ich schreibe:


```
int i = 0;
while (rsBoxLand.next()) {
         land[i][0] = rsBoxLand.getString(1);   <-------------- Null Pointer Exception in dieser Zeile
         land[i][1] = rsBoxLand.getString(2);
         land[i][2] = rsBoxLand.getString(3);
         land[i][3] = rsBoxLand.getString(4);
         i++;
}
```

Vielleicht rürt die Exception auch woanders her, aber der String vom ResultSet ist da, hab ich getestet.


HILFE!!!!!!!!!!!!!!!!!!!!!!!!!!!


----------



## Beni (24. Mrz 2005)

Na, ich glaub ich hab da was geschrieben, was nicht zu deinem Problem passt. Meez hat da schon die bessere Lösung.

Vielleicht guckst du dir auch mal eine Liste (von Listen) an (siehe  z.B. java.util.ArrayList). Eine Liste verhält sich fast wie ein Array, nur dass sie die Grösse ändern kann.


----------



## meez (24. Mrz 2005)

Machs so:

Füllen:

```
Map map = new HashMap();
//Vier Schlüssel in die Map füllen (Spaltennamen) ... Als Wert wird eine neue (leere) Liste (dynamischer Array) gespeichert.
map.put("<spaltenname>", new ArrayList());

//Wenn du jetzt zu einer Spalte Werte abfüllen willst, kannst du es so machen:
List list = (List) map.get("<spaltenname>");
list.add("<wert für die Spalte, also die zeile>");
```

Ausgeben:

```
//Alle Datensätze (Zeilen) der Spalte <spaltenname> ausgeben
List list = (List) map.get("<spaltenname>");
String s;
for (int n=0;n<list.size();n++) {
  s = (String) list.get(n);
  System.out.println(s);
}
```


----------



## Pennywise (24. Mrz 2005)

Danke, habs hinbekommen.
Und wieder was dazugelernt.


----------



## meez (24. Mrz 2005)

Dafür sind wir ja hier...


----------

