Greenfoot_arrays

Werbung
Arrays und ArrayLists
In JAVA
Arrays
• ... sind eine Sammlung von Werten, die unter einem
Namen gespeichert werden
(das gilt eigentlich für jede Datenstruktur, aber)
• ... Arrays:
– können nur gleichartige (Typ) Werte aufnehmen
– können ihre Grösse nicht ändern
– stellen den Zugriff auf bestimmte Werte über eckige
Klammern und einen index bereit: myArray[i]
– können Mehrdimensional sein: myArray[i][j]
• Ein Array ist also wie ein Regal mit Werten drin
Arrays erstellen, Kurzform
Typ + []
Name
Werte
int[] meinArray = {2, 5, 0, 1};
 ein „Regal“ mit vier Fächern und den
ganzzahligen Werten 2, 5, 0, 1 drin
Um auf Werte zuzugreifen braucht es die Nummer
des Faches (=Index). Achtung: gezählt wird ab 0!
int x = meinArray[1];
 x hat den Wert 5
meinArray[0] = 7;
 im ersten Fach ist eine 7
Arrays erstellen, mehrere Schritte
int[] meinArray = new int[4];
//erstellt Array mit 4 leeren Elementen (null)
meinArray[0] = 2; //Elemente einfüllen ...
meinArray[1] = 5;
...
Oft kann man das „Befüllen“ des Arrays mit einer Schleife regeln:
for (int i = 0; i < meinArray.length; i++ ) {
meinArray[i] = (int) Math.random();
} // gefüllt mit Zufallszahlen zwischen 0 und 1
Man geht oft mit Schleifen durch Arrays:
Wenn der Array 10 Elemente hat, dann würde im letzten
Durchgang arr[10] benutzt, also das elfte Element!
for (int i = 0; i <= arr.length; i++ ) {
//mach was mit jedem Element, also arr[i]
}
• Achtung!: wenn der Index zu gross ist und damit auf ein
nicht existierendes Element verweist, dann passiert das:
Exception in thread "Animation Thread"
java.lang.ArrayIndexOutOfBoundsException: 10
at OutOfBounds.setup(OutOfBounds.java:21)
Arrays: Hinweise
• Leere Elemente haben den Wert null
• array.length ergibt die Anzahl der Elemente
• Das erste Element hat den Index 0!
• Das letzte Element hat den Index arr.length-1!
• Es gibt Arrays für jeden Datentyp, also auch eigene
Klassen oder ein Array von Arrays
• Arrays gibt es in JAVA nur noch aus historischen
Gründen, eigentlich sollte man sauberere
Datenstrukturen vorziehen – z.B. ArrayList ...
ArrayList erstellen
ArrayList<Integer> al =
new ArrayList<Integer>(4);
//erstellt ArrayList für Integers, Grösse 4, noch leer
al.add(0, 2); //Elemente einfüllen, hier 2 an die erste Stelle
al.add(17); //Elemente hinten anfügen (Grösse variabel!)
...
„Befüllen“ der ArrayList mit einer Schleife :
for (int i = 0; i < al.size(); i++ ) {
al.add(i,(int) Math.floor(Math.random()*10));
} // gefüllt mit Zufallszahlen zwischen 0 und 9
ArrayLists: Hinweise
• ArrayLists können ihre Grösse ändern
• al.size() ergibt die Anzahl der Elemente
• Das erste Element hat den Index 0!
• Das letzte Element hat den Index al.size()-1!
• Es gibt ArrayLists für jeden Datentyp, den man generisch
festlegen kann, d.h. mit <typ>
• Für einfache Datentypen Wrapper-Klassen benutzen.
z.B. Integer für int
• Es gibt in JAVA noch viele weitere Datenstrukturen. Java
verwendet den Oberbegriff Collections, mit den
Familien: Lists, Sets, Maps und Queues
Umwandlungen
String[] array = new String[] {"Affe", "Pferd", "Elefant"};
// erzeugen einer ArrayList mit den Elementen des Arrays:
ArrayList<String> tiere = new ArrayList<String>(array);
// Wichtig: die Daten des Array wurden einfach kopiert,
tiere.add("Kuh"); // ändert nur die tiere, nicht array
// erzeugen eines Array aus den Elementen der ArrayList:
// Array mit der korrekten Anzahl Elemente anlegen
String[] neuesArray = new String[tiere.size()];
// Daten aus der ArrayList in Array kopieren
neuesArray = tiere.toArray(neuesArray);
Array:
typ[] name = {Werte};
Regal mit gleichartigen Kisten:
name[0]  Inhalt der ersten Kiste
Beispiel:
int[] arr = {3, 5, 0, 17};
// leeres Array: int[] arr = new int[4];
System.out.println(arr[3]); //  17
arr[1] = 11; // an 2. Stelle 11 statt 5
int x = arr[0]; // x ist 3
int l = arr.length; // l ist 4
Herunterladen