ArrayList in C#

Normale Arrays haben den Nachteil, dass die Indizierung statisch ist. In vielen Anwendungsfällen ist dies jedoch unpraktisch, da ein Array für keine Situation zu klein bemessen sein darf, ein zu großes Array belegt hingegen zu viel ungenutzten Speicherplatz im Arbeitsspeicher.

Eine ArrayList, welche eigentlich auch nur eine List<T> mit Index ist, schafft Abhilfe. Eine C# ArrayList ist ein dynamisches Array. Die Klasse ArrayList ist von einigen Klassen, u.A. der IList, abgeleitet. Für die Implementierung bedarf es der System.Collections.

[csharp]using System.Collections;[/csharp]

ArrayList ist eine Klasse, um sie zu verwenden muss sie instanziiert werden. Es spielt übrigens keine Rolle, was der ArrayList hinzugefügt wird, solange es ein Objekt ist (es darf eine Instanz einer eigenen Klasse sein, genauso aber auch eine Zahl des Datentyps Integer oder ein String). Der ArrayList dürfen ebenso verschiedene Datentypen zu den unterschiedlichen Feldern zugewiesen werden.

[csharp] ArrayList arrayList = new ArrayList();
[/csharp]

Die Inhalte der ArrayList lassen sich wie die eines normalen Arrays über einen Index abrufen. Nachfolgend ein komplettes Beispiel für die Verwendung einer ArrayList.

[csharp]

ArrayList arrayList = new ArrayList();

arrayList.Add(“A”);
arrayList.Add(“B”);
arrayList.Add(“C”);
arrayList.Add(“D”);
arrayList.Add(“E”);

for (int i = 0; i < arrayList.Count; i++) { Console.WriteLine("Index: " + i.ToString() + ", Inhalt: " + arrayList[i]); } [/csharp] Ausgabe:

Index: 0, Inhalt: A
Index: 1, Inhalt: B
Index: 2, Inhalt: C
Index: 3, Inhalt: D
Index: 4, Inhalt: E

Die ArrayList bietet jedoch auch noch andere Möglichkeiten. So lassen sich z.B. die Inhalte sortieren oder umkehren. Wird dem Code vor der Ausgabe folgende Zeile hinzugefügt:

[csharp] arrayList.Reverse();
[/csharp]

Dann hat dies diese Ausgabe zur Folge:

Index: 0, Inhalt: E
Index: 1, Inhalt: D
Index: 2, Inhalt: C
Index: 3, Inhalt: B
Index: 4, Inhalt: A

Elemente aus der ArrayList löschen funktioniert ebenfalls mit einer Methode. Dies verändert zudem die Index-Anzahl.

[csharp] arrayList.Remove(“B”);
[/csharp]

Index: 0, Inhalt: E
Index: 1, Inhalt: D
Index: 2, Inhalt: C
Index: 3, Inhalt: A

Hinzugefügt werden neue Elemente (samt neuem Index) zwar mit:
[csharp] arrayList.Add();
[/csharp]

Durch Index-Abruf können vorhandene Elemente aber genauso wie beim normalen Array überschrieben werden.
[csharp]arrayList[2] = “Z”;[/csharp]

Index: 0, Inhalt: E
Index: 1, Inhalt: D
Index: 2, Inhalt: Z
Index: 3, Inhalt: A