# ArrayList in Array Speichern



## Kampfnoodle (17. Jul 2009)

So Hallo,
ich steh total auf dem Schlauch (Bin halt wohl doch ne noodle ^^)
Ich möchte eine ArrayList in einem Array abspeichern, allerdings kommt, beim generieren von dem Array folgende Exception:


> Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.util.ArrayList;



Jetzt die frage...wo liegt der Fehler? Also hier noch ein paar Erklärungen.
Der Klasse wird ein Generischer Typ K übergeben und die ArrayList soll eben Objekte vom Typ K abspeichern.
Das Array soll die ArrayList enthalten...also in jedem Feld eine ArrayList.
Als Dekleration hab ich oben geschrieben:

```
private ArrayList<K>[] liste;
```

Und dann im Konstruktor es wiefolgt gecastet:

```
this.liste= (ArrayList<K>[]) new Object[arrayGroesse];
```

Wär voll nett, wenn jemand mir hier kurz auf die Sprünge helfen könnte.

Gruß Noodle


----------



## Ebenius (17. Jul 2009)

Jetzt verwirrst Du mich. Möchtest Du ein Array von Listen haben? Das bedeutet, ein Feld in dem jedes Element eine Liste ist? So in etwa mutet Dein Quelltext an, kann ich mir aber bei Deiner Beschreibung nicht vorstellen.

Wenn Du nur alle Einträge aus einer Liste in ein Feld kopieren möchtest, geht das so: 
	
	
	
	





```
List<String> list = new ArrayList<String>();
...
Object[] objectArray = list.toArray();
```
... oder so ... [java=3]String[] stringArray = list.toArray(new String[list.size()]);[/code]
Ebenius


----------



## Kampfnoodle (17. Jul 2009)

Haha...ja hab's vielleicht bissle verwirrend formuliert 

Aber du hast recht, also ich möchte ein Array von Listen. Also das Array soll eine Liste speichern.
Allerdings möcht ich nix hin oder her kopieren...es soll einfach nur erstellt werden!?


----------



## Ebenius (17. Jul 2009)

Du willst also einfach nur Felder von parametrisierten Komponententypen erzeugen?

Das geht eigentlich nur so: 
	
	
	
	





```
final List<String>[] array = new List[10];
```
Da gibt's eine [c]unchecked[/c]-Warning. Die muss man dann ignorieren; zum Beispiel mit [c]@SuppressWarnings("unchecked")[/c].

Ebenius


----------



## Kampfnoodle (17. Jul 2009)

Hey, supergeil, es funktioniert!! 

Danke Ebenius für die superschnelle und gute Antwort!

Gruß noodle ^^


----------



## schmilka (9. Aug 2011)

Hallo!
Auch wenn das Thema mittlerweile schon recht veraltet ist, habe ich gerade ein ähnliches Problem.

Um mein Problem nochmal zusammenzufassen:
Ich möchte ein Array mit ArrayListen erstellen. Das Erstellen funktioniert ja (wie auch oben beschrieben) z.B. wie folgt:


```
import java.util.*;
..
ArrayList<Integer>[] test = new ArrayList[5];
```

Würde hier in meinem Fall nur gerne wissen, wie ich einer dieser ArrayListen etwas hinzufüge.

Mit 

```
test[3].add(5);
```
oder

```
test[3].add(new ArrayList<Integer>());
```
usw. habe ich es schon versucht, jedoch immer mit einer NullPointerException als Ergebnis, was ich aber in dem Fall nicht unbedingt nachvollziehen kann.

Für eine Antwort wäre ich sehr dankbar.

Grüße


----------



## Volvagia (9. Aug 2011)

test <- Array
test[n] <- ArrayList.

Das Array wird aber wie jedes Object-Array mit Feldern die bloß auf 'null' zeigen intialisiert, anderst ist es ja auch kaum möglich.


```
ArrayList<Integer>[] test = new ArrayList[5]; // Array deklarieren und erzeugen.
test[3] = new ArrayList<Integer>(); // ArrayList erzeugen.
test[3].add(42); // Wert einfügen.
```

Es empfiehlt sich aber, ein Array vom List-Typ zu erzeugen. Das vereinfacht spätere Änderungen, z. B. zu LinkedList, du kannst auch direkt unterschiedliche Typen reinschreiben -> Polymorphie.


----------

