Ein größenveränderbares Array
ist natürlich kein eigentliches Array
,
sondern eine ArrayList
.
Zwischen einem Array
und einer ArrayList besteht ein entscheidender
Unterschied: In einem Array T[]
existiert für jeden Elementtyp T
ein Array-Typ T[]
. ArrayList
hingegen ist eine
Bibliotheksklasse des Paketes java.util
,
die Elemente vom Typ Object
speichert.
import java.util.ArrayList;
public class ArrayListClass {
public static void main(String[] args){
ArrayList al = new ArrayList();
Integer ig = new Integer(17);
Character ca = new Character('w');
al.add("Willi");
al.add(ca);
al.add(ig);
for(int i=0;i<al.size();i++){
System.out.println(al.get(i));
}
}
}
In einer ArrayList
können nahezu
beliebig viele Elemente gespeichert werden. Die Größe der
ArrayList
muss hierzu nicht
festgelegt werden, kann jedoch bei der Instanzbildung als Parameter
an den Konstruktor übergeben werden:
ArrayList al = new ArrayList(100);
Sie ist jedoch jederzeit erweiterbar. Die zu speichernden Elemente
müssen vom Typ Object
sein,
können also - wie im Beispiel - auch unterschiedlichen Typen
angehören. Dies ist bei einem Array
nicht möglich. Das Einfügen erfolgt mit der Methode add().
Um ein Element an einer
bestimmten Position eizufügen muss eine set()
-Methode
verwendet werden:
al.set(i, str);
Dies entspricht der Array
-Syntax a[i] = str;
Das Auslesen einer ArrayList gestaltet sich etwas
komplizierter, da Elemente von Typ Object
zurück gegeben werden. Der Wert muss somit entsprechend
gewandelt werden:
Integer i = (Integer)al.get(25);
Hier wird das Element an 26. Stelle ausgelesen und in ein
Integer-Objekt gewandelt (Auch eine ArrayList
beginnt bei 0 zu zählen).
Um die Vorteile von Array und ArrayList
zu kombinieren, kann man so vorgehen, dass man zunächst alle
gewünschten Elemente in eine ArrayList
einfügt und diese dann in ein Array
wandelt. Selbstverständlich dürfen hierzu nur gleiche
Datentypen in der ArrayList
gespeichert sein:
Noch einmal: es dürfen nur Objekte in einer ArrayList abgelegt werden. Das direkte
Speichern des primitiven Datentyps int
ist nicht möglich.
Möchte man ein Array primitiver
Datentypen erzeugen, so muss dies explizit erzeugt werden:
import java.util.ArrayList;
public class ArrayListZuArrayClass {
public static void main(String[] args){
ArrayList al = new ArrayList();
int i=25;
while(i<74){
al.add(new Integer(i));
i++;
}
Integer[] ia = new Integer[al.size()];
al.toArray(ia);
int[] inta = new int[al.size()];
for(int n=0; n<inta.length; n++){
inta[n]=ia[n].intValue();
System.out.println(inta[n]);
}
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.