CodeGym /Kurse /JAVA 25 SELF /„Unendliches Array“ – ArrayList<T>

„Unendliches Array“ – ArrayList<T>

JAVA 25 SELF
Level 12 , Lektion 1
Verfügbar

1. Einleitung

Dies ist die erste Vorlesung des Bonus-Levels. Wir sind dem Studium der OOP bereits sehr nahe gekommen. Und ich möchte Ihr Interesse wecken und ein wenig vorgreifen 😈. In diesem Level erzähle ich Ihnen von 5 interessanten Dingen:

  1. ♾️ Sie lernen, „unendliche“ Arrays zu erstellen
  2. 📖 Dann ein „persönliches Wörterbuch“ pflegen
  3. 💾 Danach mache ich Sie kurz mit der Dateiverarbeitung vertraut
  4. 🌐 Dann lernen wir, Bilder aus dem Internet herunterzuladen
  5. 🛰️ Und in der letzten Vorlesung des Levels werden Sie die Raumstation ISS in Echtzeit verfolgen

Wie das alles unter der Haube funktioniert, erfahren Sie in den kommenden Levels, und heute lernen Sie einfach, die von mir bereitgestellten Werkzeuge zu benutzen. Neugierig geworden? Dann legen wir los 😇.

Normale Arrays wiederholen

Erinnern wir uns an ein normales Array in Java:

int[] arr = new int[10];

Tolle Sache, aber es gibt ein paar Einschränkungen: Die Größe ist fix; man kann kein Element hinzufügen oder entfernen, ohne ein neues Array zu erstellen. Manchmal wünscht man sich jedoch ein Array, das je nach Bedarf wächst und schrumpft. Und wir haben eine großartige Lösung – das dynamische Array ArrayList!

ArrayList ist ein „intelligentes Array“, das automatisch wachsen und schrumpfen kann. Im Gegensatz zu einem normalen Array mit fester Größe kümmert sich ArrayList selbst darum, dass genügend Platz für neue Elemente vorhanden ist.

Ein unendliches Array erstellen

Um unsere ArrayList zu erstellen, schreiben wir Code der Form:

ArrayList<String> array = new ArrayList<String>()

Danach können wir Elemente hinzufügen:

array.add("Mary");
array.add("Kate");

Dynamisches Array für Ganzzahlen erstellen

Wie Sie sich vielleicht schon denken, muss der Typ der Elemente unseres dynamischen Arrays in spitzen Klammern angegeben werden. Dort kann man jeden Typ angeben, außer primitive Typen. Primitive Typen müssen durch ihre Wrapper-Typen ersetzt werden.

Beispiel:

ArrayList<Integer> numbers = new ArrayList<Integer>();      // int
ArrayList<Double> fees = new ArrayList<Double>();            // double
ArrayList<Boolean> yesList = new ArrayList<Boolean>();       // boolean
ArrayList<Character> chars = new ArrayList<Character>();     // char

Unsere ArrayList unterstützt keinen Zugriff per [index], aber sie bietet spezielle Methoden, die alle Ihre Bedürfnisse abdecken. Schauen wir uns die interessantesten an.

2. Methode add(element) – Element hinzufügen

Das Erste, was wir mit einer Liste tun, ist Daten hinzuzufügen. Dafür gibt es die Methode add. Sie legt ein Element ans Ende der Liste.

ArrayList<String> todo = new ArrayList<>(); // To-do-Liste
todo.add("ArrayList lernen");
todo.add("Tee machen");
todo.add("Spazieren gehen");

Nach diesen drei Zeilen haben wir eine Liste aus drei Strings. Im Gegensatz zum Array müssen wir die Größe nicht im Voraus angeben – sie wächst automatisch mit dem Hinzufügen.

Sehr praktisch: Man kann mit einer leeren Liste beginnen und sie nach und nach abhängig von Benutzeraktionen oder Programmeingaben befüllen.

3. Methode get(index) – Zugriff per Index

Jedes Element der Liste hat eine Ordnungsnummer – den Index. Die Indizierung beginnt immer bei null. Das heißt, das erste Element hat die Nummer 0, das zweite die Nummer 1 und so weiter.

Wenn wir ein Element anhand seiner Nummer holen möchten, verwenden wir die Methode get.

String task = todo.get(1);
System.out.println("Zweite Aufgabe: " + task);

Ausgabe:

Zweite Aufgabe: Tee machen

Wichtig: Wenn man auf einen nicht vorhandenen Index zugreift (zum Beispiel todo.get(10) bei einer Liste mit drei Elementen), wirft das Programm eine IndexOutOfBoundsException. Daher sollte man sich entweder des Indexes sicher sein oder die Größe der Liste über size() prüfen.

4. Methode set(index, element) – Element ersetzen

Manchmal muss ein Element in der Liste ersetzt werden. In diesem Fall muss man es nicht löschen und neu hinzufügen – es genügt, die Methode set zu verwenden.

todo.set(1, "Kaffee kochen"); 
System.out.println("Jetzt ist die zweite Aufgabe: " + todo.get(1));

Ausgabe:

Jetzt ist die zweite Aufgabe: Kaffee kochen

Damit ist set eine Möglichkeit, die Liste „on the fly“ zu aktualisieren.

5. Methode remove(index) – Element entfernen

Ein Element kann aus der ArrayList per Index entfernt werden.

todo.remove(0); 
System.out.println("Die erste Aufgabe ist jetzt: " + todo.get(0));

Ausgabe:

Die erste Aufgabe ist jetzt: Kaffee kochen

Wir haben das erste Element (Index 0) entfernt. Jetzt ist das zweite zum ersten geworden, und das dritte zum zweiten. Wichtiger Punkt: Nach dem Entfernen werden die Elemente der Liste verschoben.

Das kann für Anfänger manchmal überraschend sein. Beachten Sie stets, dass die Indizes nach dem Entfernen neu berechnet werden.

6. Methode size() – die Größe der Liste ermitteln

Die Methode size gibt die Anzahl der Elemente in der Liste zurück. Das ähnelt der Eigenschaft length bei Arrays, aber bei ArrayList ist es eine Methode.

System.out.println("Insgesamt Aufgaben: " + todo.size());

Ausgabe:

Insgesamt Aufgaben: 2

Häufig wird size in Schleifen verwendet, um alle Elemente zu durchlaufen:

for (int i = 0; i < todo.size(); i++) 
{
    System.out.println(todo.get(i));
}

7. Methode contains(element) – Vorhandensein prüfen

Um herauszufinden, ob ein benötigtes Element in der Liste vorhanden ist, kann man contains verwenden. Diese Methode liefert true oder false.

System.out.println(todo.contains("Spazieren gehen"));
System.out.println(todo.contains("Tee machen"));

Ausgabe:

true
false

Sehr nützlich, wenn Sie Duplikate vermeiden oder die Bedingung „Gibt es dieses Element in der Liste?“ prüfen möchten.

8. Elemente durchlaufen

Es gibt zwei Möglichkeiten, eine Liste zu durchlaufen.

Indexbasierte Schleife

Diese Variante braucht man, wenn die Positionsnummer wichtig ist.

for (int i = 0; i < todo.size(); i++) 
{
    System.out.println(i + ": " + todo.get(i));
}

for-each-Schleife

Wenn die Nummer egal ist und Sie einfach alle Elemente ansehen möchten, verwenden Sie die for-each-Schleife.

for (String task : todo) 
{
    System.out.println("Aufgabe: " + task);
}

Diese Schleife ist kürzer und leichter zu lesen.

9. Praxis: ArrayList in Ihrer Anwendung

Erstellen wir eine To-do-Liste, die man befüllen und ausgeben kann:

import java.util.ArrayList;
import java.util.Scanner;

public class TodoApp 
{
    public static void main(String[] args) 
    {
        ArrayList<String> todo = new ArrayList<>();
        Scanner console = new Scanner(System.in);

        while (true) 
        {
            System.out.print("Geben Sie eine Aufgabe ein (oder eine leere Zeile zum Beenden): ");
            String task = console.nextLine();
            if (task.isEmpty()) break;
            todo.add(task);
        }

        System.out.println("Ihre To-do-Liste:");
        for (int i = 0; i < todo.size(); i++) 
        {
            System.out.println((i + 1) + ". " + todo.get(i));
        }
    }
}

Ich hoffe, Ihnen hat unser „unendliches“ Array gefallen. Es ist die erste der Java-Collections, mit der Sie sich vertraut gemacht haben. Ich denke, die anderen werden Ihnen ebenfalls gefallen.

1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 1
Gesperrt
Hinzufügen und Abrufen eines Elements
Hinzufügen und Abrufen eines Elements
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 1
Gesperrt
Ersetzen und Entfernen von Elementen
Ersetzen und Entfernen von Elementen
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 1
Gesperrt
Prüfung auf Vorhandensein eines Elements in der Liste
Prüfung auf Vorhandensein eines Elements in der Liste
1
Aufgabe
JAVA 25 SELF, Level 12, Lektion 1
Gesperrt
To-do-Liste mit Benutzereingabe
To-do-Liste mit Benutzereingabe
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION