Arrays und ArrayLists In JAVA
(das gilt eigentlich für jede Datenstruktur, aber) 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<int> al = new ArrayList<int>(4); //erstellt ArrayList, Grösse 4 al.get(0) = 2; //Elemente einfüllen ... al.get(1) = 5; ... „Befüllen“ der ArrayList mit einer Schleife : for (int i = 0; i < al.size(); i++ ) { al.get(i) = (int) Math.random(); } // gefüllt mit Zufallszahlen zwischen 0 und 1
ArrayLists können ihre Grösse ändern ArrayList<int> al = new ArrayList<int>(); //erstellt ArrayList, Grösse 0 al.add(2); //Elemente einfüllen ... al.add(5); ... „Befüllen“ der ArrayList mit einer Schleife : for (int i = 0; i < n; i++ ) { al.add(i) = (int) Math.random(); } // gefüllt mit Zufallszahlen zwischen 0 und 1
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> 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: List<String> tiere = new ArrayList<String>(array); // Wichtig: die Daten des Array wurden einfach kopiert, tiere.add("Kuh"); // ändert nur die ArrayList, 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