Java ArrayList
Das ArrayList
in Java ist ein Teil des Java Collections Framework und befindet sich im Paket java.util
. Es ist eine größenveränderbare Array-Implementierung der Schnittstelle List
, die eine bequeme Möglichkeit bietet, Sammlungen von Elementen mit dynamischer Größe zu speichern.
Verwendung
ArrayList
wird verwendet, wenn du ein flexibles Feld brauchst, das wachsen und schrumpfen kann. Sie ermöglicht einen schnellen Zufallszugriff und ist für Szenarien geeignet, in denen häufige Lesevorgänge erforderlich sind.
Syntax
ArrayList<Type> arrayListName = new ArrayList<Type>();
Type
: Der Typ der Elemente in der Liste.arrayListName
: Der Name derArrayList
Instanz.
Beispiele
Beispiel 1: Grundlegende Operationen
import java.util.ArrayList;
public class BasicArrayListExample {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
System.out.println("Fruits: " + fruits);
fruits.remove("Banana");
System.out.println("After removal: " + fruits);
System.out.println("First fruit: " + fruits.get(0));
}
}
In diesem Beispiel wird ein ArrayList
vom Typ String
erstellt, um Obstnamen zu speichern. Die Methode add()
wird verwendet, um Elemente einzufügen, remove()
löscht ein Element und get()
ruft ein Element über seinen Index ab.
Beispiel 2: Iterieren über eine ArrayListe
import java.util.ArrayList;
public class IterateArrayListExample {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
for (int number : numbers) {
System.out.println(number);
}
}
}
Dieses Beispiel zeigt, wie du mit einer for-each
Schleife über eine ArrayList
iterieren kannst. Ein ArrayList
vom Typ Integer
wird erstellt und jedes Element wird auf der Konsole ausgegeben.
Beispiel 3: Sortieren einer ArrayListe
import java.util.ArrayList;
import java.util.Collections;
public class SortArrayListExample {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("John");
names.add("Alice");
names.add("Bob");
Collections.sort(names);
System.out.println("Sorted names: " + names);
}
}
In diesem Beispiel wird ein ArrayList
vom Typ String
mit der Methode Collections.sort()
sortiert, die die Elemente in natürlicher Reihenfolge anordnet.
Zusätzliche Operationen
Die Klasse ArrayList
bietet mehrere Methoden, um Operationen mit den Elementen durchzuführen:
- Auf Gegenstände zugreifen: Verwende die Methode
get()
, um Elemente nach Index abzurufen. - Ändern von Gegenständen: Verwende die Methode
set()
, um ein Element an einem bestimmten Index zu ändern. - Entfernen von Gegenständen: Verwende die Methode
remove()
, um ein Element nach Index zu löschen, und die Methodeclear()
, um alle Elemente zu entfernen. - Größe der ArrayListe ermitteln: Verwende die Methode
size()
, um die Anzahl der Elemente inArrayList
zu ermitteln. - Andere Typen verwenden: Speichere verschiedene Datentypen in
ArrayList
mit Hilfe von Wrapper-Klassen für primitive Typen (z.B.Integer
,Boolean
).
Tipps und bewährte Praktiken
- Anfangskapazität: Wenn die Größe von
ArrayList
im Voraus bekannt ist, kannst du eine Anfangskapazität angeben, um die Leistung zu verbessern und die Notwendigkeit einer Größenänderung zu verringern.ArrayList list = new ArrayList<>(50); // Initial capacity of 50
- Typ Sicherheit: Verwende Generika, um Typsicherheit zu gewährleisten und Laufzeitfehler zu vermeiden.
ArrayList numbers = new ArrayList<>(); // Type-safe declaration
- Vermeide häufige Größenänderungen: Minimiere häufige Hinzufügungen und Entfernungen von Elementen, um den Overhead bei Größenänderungen zu reduzieren.
- Verwende Iterator für sicheres Entfernen: Wenn du während der Iteration Elemente entfernst, verwende eine
Iterator
, umConcurrentModificationException
zu vermeiden.Iterator iterator = list.iterator(); while (iterator.hasNext()) { if (condition) { iterator.remove(); } }
- Erwäge LinkedList für häufige Einfügungen/Löschungen: Wenn häufige Einfügungen und Löschungen erforderlich sind, solltest du
LinkedList
verwenden, das für solche Vorgänge eine bessere Leistung bietet.