Java ArrayList ist ein Teil von Java Sammlungsrahmen und es ist eine Klasse des java.util-Pakets. Es stellt uns dynamische Arrays in Java zur Verfügung. Es ist zwar möglicherweise langsamer als Standard-Arrays, kann aber in Programmen hilfreich sein, bei denen viele Manipulationen im Array erforderlich sind. Diese Klasse befindet sich in java.util Paket. Das Wichtigste Vorteil von ArrayList in Java Das heißt, wenn wir ein Array deklarieren, müssen wir die Größe angeben, in ArrayList ist es jedoch nicht erforderlich, die Größe von ArrayList anzugeben. Wenn Sie die Größe angeben möchten, können Sie dies tun.
Inhaltsverzeichnis
- Was ist ArrayList in Java?
- Beispiel für eine Java-ArrayList
- Wichtige Funktionen von ArrayList in Java
- Konstruktoren in ArrayList
- ArrayList in Java-Methoden
- In ArrayList ausgeführte Operationen
- Komplexität von Java ArrayList
- Vorteile von Java ArrayList
- Nachteile von Java ArrayList
- Abschluss
- FAQs zu ArrayList
Was ist ArrayList in Java?
ArrayList ist eine Java-Klasse, die über die List-Schnittstelle implementiert wird. Java ArrayList bietet, wie der Name schon sagt, die Funktionalität eines dynamischen Arrays, dessen Größe nicht als Array festgelegt ist. Als Teil des Collections-Frameworks verfügt es außerdem über viele Funktionen, die bei Arrays nicht verfügbar sind.
Illustration:
Lassen Sie uns die ArrayList mit dem darin gespeicherten Integer-Objekttyp mit einem Bild überprüfen.
Beispiel für eine Java-ArrayList
Beispiel 1: Die folgende Implementierung zeigt, wie eine ArrayList unter Angabe ihrer Größe erstellt und verwendet wird.
Java // Java program to demonstrate the // working of ArrayList import java.io.*; import java.util.*; class ArrayListExample { public static void main(String[] args) { // Size of the // ArrayList int n = 5; // Declaring the ArrayList with // initial size n ArrayList arr1 = neue ArrayList (N); // Deklaration der ArrayList ArrayList arr2 = neue ArrayList (); // Drucken der ArrayList System.out.println('Array 1:' + arr1); System.out.println('Array 2:' + arr2); // Anhängen neuer Elemente // am Ende der Liste for (int i = 1; i<= n; i++) { arr1.add(i); arr2.add(i); } // Printing the ArrayList System.out.println('Array 1:' + arr1); System.out.println('Array 2:' + arr2); } }>
Ausgabe
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
Erläuterung des oben genannten Programms:
ArrayList ist ein dynamisches Array und wir müssen die Größe beim Erstellen nicht angeben. Die Größe des Arrays erhöht sich automatisch, wenn wir Elemente dynamisch hinzufügen und entfernen. Obwohl die eigentliche Bibliotheksimplementierung komplexer sein kann, ist das Folgende eine sehr grundlegende Idee, die die Funktionsweise des Arrays erklärt, wenn das Array voll ist und wir versuchen, ein Element hinzuzufügen:
- Erstellt einen größeren Speicher im Heap-Speicher (z. B. doppelt so großen Speicher).
- Kopiert die aktuellen Speicherelemente in den neuen Speicher.
- Das neue Element wird jetzt hinzugefügt, da jetzt größerer Speicher verfügbar ist.
- Löschen Sie den alten Speicher.
Wichtige Funktionen von ArrayList in Java
- ArrayList erbt AbstractList Klasse und implementiert die Listenschnittstelle .
- ArrayList wird nach Größe initialisiert. Allerdings wird die Größe automatisch erhöht, wenn die Sammlung wächst, bzw. verkleinert, wenn die Objekte werden aus der Sammlung entfernt.
- Mit Java ArrayList können wir zufällig auf die Liste zugreifen.
- ArrayList kann nicht verwendet werden Wrapper-Klasse für solche Fälle.
- ArrayList in Java kann als angesehen werden Vektor in C++ .
- ArrayList ist nicht synchronisiert. Die entsprechende synchronisierte Klasse in Java ist Vektor .
Lassen Sie uns das verstehen Java ArrayList im Detail . Schauen Sie sich das folgende Bild an:
In der obigen Abbildung ist AbstractList , CopyOnWriteArrayList , Und AbstractSequentialList sind die Klassen, die die Listenschnittstelle implementieren. In jeder der genannten Klassen ist eine eigene Funktionalität implementiert. Sie sind:
- AbstractList: Diese Klasse wird verwendet, um eine nicht veränderbare Liste zu implementieren, für die man nur diese AbstractList-Klasse erweitern und nur die implementieren muss erhalten() und das Größe() Methoden.
- CopyOnWriteArrayList: Diese Klasse implementiert die Listenschnittstelle. Es ist eine erweiterte Version von Anordnungsliste Dabei werden alle Änderungen (Hinzufügen, Festlegen, Entfernen usw.) durch Erstellen einer neuen Kopie der Liste implementiert.
- AbstractSequentialList: Diese Klasse implementiert die Sammlungsschnittstelle und die AbstractCollection-Klasse. Diese Klasse wird verwendet, um eine nicht veränderbare Liste zu implementieren, für die man nur diese AbstractList-Klasse erweitern und nur die implementieren muss erhalten() und das Größe() Methoden.
Konstruktoren in ArrayList in Java
Um eine ArrayList zu erstellen, müssen wir ein Objekt der ArrayList-Klasse erstellen. Die ArrayList-Klasse besteht aus verschiedenen Konstrukteure die die mögliche Erstellung der Array-Liste ermöglichen. Die folgenden Konstruktoren sind in dieser Klasse verfügbar:
1. ArrayList()
Dieser Konstruktor wird verwendet, um eine leere Array-Liste zu erstellen. Wenn wir eine leere ArrayList mit dem Namen erstellen möchten arr Dann kann es wie folgt erstellt werden:
Bullen gegen Ochsen
ArrayList arr = new ArrayList();>
2. ArrayList(Sammlung c)
Dieser Konstruktor wird verwendet, um eine Array-Liste zu erstellen, die mit den Elementen aus der Sammlung c initialisiert wird. Angenommen, wir möchten eine ArrayList arr erstellen, die die in der Sammlung c vorhandenen Elemente enthält, dann kann sie wie folgt erstellt werden:
ArrayList arr = new ArrayList(c);>
3. ArrayList(int Kapazität)
Mit diesem Konstruktor wird eine Array-Liste erstellt, wobei die Anfangskapazität angegeben wird. Angenommen, wir möchten eine ArrayList mit der Anfangsgröße N erstellen, dann kann sie wie folgt erstellt werden:
ArrayList arr = new ArrayList(N);>
Java ArrayList-Methoden
Methode | Beschreibung |
---|---|
add(int index, Object element) | Diese Methode wird verwendet, um ein bestimmtes Element an einem bestimmten Positionsindex in einer Liste einzufügen. |
add(Objekt o) | Mit dieser Methode wird ein bestimmtes Element an das Ende einer Liste angehängt. |
addAll(Sammlung C) | Mit dieser Methode werden alle Elemente einer bestimmten Sammlung an das Ende der genannten Liste angehängt, und zwar in einer solchen Reihenfolge, dass die Werte vom Iterator der angegebenen Sammlung zurückgegeben werden. |
addAll(int index, Collection C) | Wird verwendet, um alle Elemente ab der angegebenen Position aus einer bestimmten Sammlung in die genannte Liste einzufügen. |
klar() | Mit dieser Methode werden alle Elemente aus einer beliebigen Liste entfernt. |
Klon() | Diese Methode wird verwendet, um eine flache Kopie einer ArrayList in Java zurückzugeben. |
enthält? (Objekt o) | Gibt true zurück, wenn diese Liste das angegebene Element enthält. |
secureCapacity?(int minCapacity) | Erhöht bei Bedarf die Kapazität dieser ArrayList-Instanz, um sicherzustellen, dass sie mindestens die durch das Argument für die Mindestkapazität angegebene Anzahl von Elementen aufnehmen kann. |
forEach?(Verbraucheraktion) | Führt die angegebene Aktion für jedes Element des Iterable aus, bis alle Elemente verarbeitet wurden oder die Aktion eine Ausnahme auslöst. |
get?(int index) | Gibt das Element an der angegebenen Position in dieser Liste zurück. |
indexOf(Objekt O) | Der Index des ersten Vorkommens eines bestimmten Elements wird entweder zurückgegeben oder -1, falls das Element nicht in der Liste enthalten ist. |
ist leer?() | Gibt true zurück, wenn diese Liste keine Elemente enthält. |
lastIndexOf(Object O) | Der Index des letzten Vorkommens eines bestimmten Elements wird entweder zurückgegeben oder -1, falls das Element nicht in der Liste enthalten ist. |
listIterator?() | Gibt einen Listeniterator über die Elemente in dieser Liste zurück (in der richtigen Reihenfolge). |
listIterator?(int index) | Gibt einen Listeniterator über die Elemente in dieser Liste (in der richtigen Reihenfolge) zurück, beginnend an der angegebenen Position in der Liste. |
entfernen?(int index) | Entfernt das Element an der angegebenen Position in dieser Liste. |
entfernen? (Objekt o) | Entfernt das erste Vorkommen des angegebenen Elements aus dieser Liste, sofern es vorhanden ist. |
RemoveAll?(Sammlung c) | Entfernt aus dieser Liste alle Elemente, die in der angegebenen Sammlung enthalten sind. |
removeIf?(Prädikatfilter) | Entfernt alle Elemente dieser Sammlung, die das angegebene Prädikat erfüllen. |
removeRange?(int fromIndex, int toIndex) | Entfernt aus dieser Liste alle Elemente, deren Index zwischen fromIndex (inklusive) und toIndex (exklusiv) liegt. |
keepAll?(Sammlung c) | Behält nur die Elemente in dieser Liste, die in der angegebenen Sammlung enthalten sind. |
set?(int index, E element) | Ersetzt das Element an der angegebenen Position in dieser Liste durch das angegebene Element. |
Größe?() | Gibt die Anzahl der Elemente in dieser Liste zurück. |
Spliterator?() | Erstellt einen spät bindenden und ausfallsicheren Spliterator über die Elemente in dieser Liste. |
subList?(int fromIndex, int toIndex) | Gibt eine Ansicht des Teils dieser Liste zwischen dem angegebenen fromIndex (inklusive) und toIndex (exklusiv) zurück. |
toArray() | Diese Methode wird verwendet, um ein Array zurückzugeben, das alle Elemente in der Liste in der richtigen Reihenfolge enthält. |
toArray(Object[] O) | Sie wird auch verwendet, um ein Array zurückzugeben, das alle Elemente in dieser Liste in der richtigen Reihenfolge enthält, genau wie bei der vorherigen Methode. |
trimToSize() | Diese Methode wird verwendet, um die Kapazität der Instanz der ArrayList auf die aktuelle Größe der Liste zu reduzieren. |
Notiz: Sie können auch eine generische ArrayList erstellen:
// Generische Integer-ArrayList erstellen
ArrayList arrli = new ArrayList();
Einige wichtige Punkte von ArrayList in Java
- ArrayList ist ein unterstrichenes Datenstruktur-Array mit veränderbarer Größe oder ein erweiterbares Array.
- ArrayList-Duplikate sind zulässig.
- Die Einfügungsreihenfolge bleibt erhalten.
- Heterogene Objekte sind erlaubt.
- Nulleinfügung ist möglich.
Sehen wir uns an, wie Sie einige grundlegende Operationen an der aufgeführten ArrayList ausführen, die wir neben der Implementierung jeder Operation weiter besprechen werden.
- Element zur Liste hinzufügen/Element hinzufügen
- Elemente ändern/Element setzen
- Elemente entfernen/Element löschen
- Iterierende Elemente
- Elemente erhalten
- Fügen Sie Elemente zwischen zwei Zahlen hinzu
- Elemente sortieren
- ArrayList-Größe
In ArrayList ausgeführte Operationen
1. Elemente hinzufügen
Um ein Element zu einer ArrayList hinzuzufügen, können wir die verwenden add()-Methode . Diese Methode ist überladen, um mehrere Vorgänge basierend auf unterschiedlichen Parametern auszuführen. Sie sind wie folgt:
- add(Object): Mit dieser Methode wird ein Element am Ende der ArrayList hinzugefügt.
- add(int index, Object): Mit dieser Methode wird ein Element an einem bestimmten Index in der ArrayList hinzugefügt.
Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:
Java // Java Program to Add elements to An ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Array of string type ArrayListal = new ArrayList(); // Elemente zu ArrayList hinzufügen // Benutzerdefinierte Eingaben al.add('Geeks'); al.add('Geeks'); // Hier erwähnen wir den Index // an dem es hinzugefügt werden soll al.add(1, 'For'); // Alle Elemente in einer ArrayList drucken System.out.println(al); } }>
Ausgabe
[Geeks, For, Geeks]>
2. Elemente verändern
Wenn wir nach dem Hinzufügen der Elemente das Element ändern möchten, können wir dies mit dem tun Satz() Methode. Da eine ArrayList indiziert ist, wird das Element, das wir ändern möchten, durch den Index des Elements referenziert. Daher benötigt diese Methode einen Index und das aktualisierte Element, das an diesem Index eingefügt werden muss.
Nachfolgend finden Sie die Umsetzung des oben genannten Ansatzes:
Java // Java Program to Change elements in ArrayList // Importing all utility classes import java.util.*; // main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist object of string type ArrayListal = new ArrayList(); // Elemente zur Arraylist hinzufügen // Benutzerdefinierte Eingabeelemente al.add('Geeks'); al.add('Geeks'); // Hinzufügen unter Angabe des hinzuzufügenden Index al.add(1, 'Geeks'); // Drucken der Arraylist-Elemente System.out.println('Initial ArrayList ' + al); // Element am 1. Index setzen al.set(1, 'For'); // Drucken der aktualisierten Arraylist System.out.println('Updated ArrayList ' + al); } }>
Ausgabe
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
3. Elemente entfernen
Um ein Element aus einer ArrayList zu entfernen, können wir die verwenden Methode „remove()“. . Diese Methode ist überladen, um mehrere Vorgänge basierend auf unterschiedlichen Parametern auszuführen. Sie sind wie folgt:
- entfernen(Objekt): Diese Methode wird verwendet, um einfach ein Objekt aus der ArrayList zu entfernen. Wenn mehrere solcher Objekte vorhanden sind, wird das erste Vorkommen des Objekts entfernt.
- entfernen(int index): Da eine ArrayList indiziert ist, nimmt diese Methode einen ganzzahligen Wert an, der einfach das Element entfernt, das an diesem bestimmten Index in der ArrayList vorhanden ist. Nach dem Entfernen des Elements werden alle Elemente nach links verschoben, um den Platz zu füllen, und die Indizes der Objekte werden aktualisiert.
Beispiel:
Java // Java program to Remove Elements in ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an object of arraylist class ArrayListal = new ArrayList(); // Elemente zu ArrayList hinzufügen // Benutzerdefinierte Ergänzung al.add('Geeks'); al.add('Geeks'); // Element an einem bestimmten Index hinzufügen al.add(1, 'For'); // Alle Elemente von ArrayList drucken System.out.println('Initial ArrayList ' + al); // Element von oben entfernen ArrayList al.remove(1); // Drucken der aktualisierten Arraylist-Elemente System.out.println('After the Index Removal ' + al); // Dieses Wortelement in ArrayList entfernen al.remove('Geeks'); // Jetzt aktualisierte ArrayList drucken System.out.println('After the Object Removal ' + al); } }>
Ausgabe
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
4. Iterieren der ArrayList
Es gibt mehrere Möglichkeiten, die ArrayList zu durchlaufen. Die bekanntesten Methoden sind die Verwendung der Basismethode for-Schleife in Kombination mit a get()-Methode um das Element an einem bestimmten Index zu erhalten und das für eine Schleife erweitert .
Beispiel
Java // Java program to Iterate the elements // in an ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist of string type ArrayListal = new ArrayList(); // Elemente zu ArrayList hinzufügen // mit der Standardmethode add() al.add('Geeks'); al.add('Geeks'); al.add(1, 'For'); // Mit der Get-Methode und der // for-Schleife for (int i = 0; i< al.size(); i++) { System.out.print(al.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : al) System.out.print(str + ' '); } }>
Ausgabe
Geeks For Geeks Geeks For Geeks>
5. Elemente abrufen
Java // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList list = new ArrayList(); // Nummer hinzufügen list.add(9); list.add(5); list.add(6); System.out.println(list); // Methode abrufen Integer n= list.get(1); System.out.println('at indext 1 number is:'+n); } }>
Ausgabe
[9, 5, 6] at indext 1 number is:5>
6. Elemente zwischen zwei Zahlen hinzufügen
Java // Java program to add the elements // between two numbers in ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(2); list.add(4); System.out.println(list); // fehlendes Element 3 einfügen list.add(2, 3); System.out.println(list); } }>
Ausgabe
[1, 2, 4] [1, 2, 3, 4]>
7. ArrayList-Sortierung
Java // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(2); list.add(4); list.add(3); list.add(1); System.out.println('Vor dem Sortieren der Liste:'); System.out.println(list); Collections.sort(list); System.out.println('after sorting list:'); System.out.println(list); } }>
Ausgabe
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>
8. Größe der Elemente
Java // Java program to find the size // of elements of an ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int b = list.size(); System.out.println('Die Größe ist:' + b); } }>
Ausgabe
The size is :4>
Komplexität von Java ArrayList
Betrieb | Zeitkomplexität | Weltraumkomplexität |
---|---|---|
Einfügen eines Elements in ArrayList | O(1) | AN) |
Element aus ArrayList entfernen | AN) | O(1) |
Durchlaufen von Elementen in ArrayList | AN) | AN) |
Ersetzen von Elementen in ArrayList | O(1) | O(1) |
ArrayList in Java ist eine Klasse im Java Collections-Framework, die die List-Schnittstelle implementiert. Hier sind die Vor- und Nachteile der Verwendung von ArrayList in Java.
SQL-Auswahl mehrerer Tabellen
Vorteile von Java ArrayList
- Dynamische Größe: ArrayList kann dynamisch vergrößert und verkleinert werden, sodass Elemente je nach Bedarf einfach hinzugefügt oder entfernt werden können.
- Einfach zu verwenden: ArrayList ist einfach zu verwenden und daher eine beliebte Wahl für viele Java-Entwickler.
- Schneller Zugriff: ArrayList bietet schnellen Zugriff auf Elemente, da es unter der Haube als Array implementiert ist.
- Geordnete Sammlung: ArrayList behält die Reihenfolge der Elemente bei, sodass Sie auf Elemente in der Reihenfolge zugreifen können, in der sie hinzugefügt wurden.
- Unterstützt Nullwerte: ArrayList kann Nullwerte speichern, was es in Fällen nützlich macht, in denen das Fehlen eines Werts dargestellt werden muss.
Nachteile von Java ArrayList
- Langsamer als Arrays: ArrayList ist bei bestimmten Vorgängen langsamer als Arrays, beispielsweise beim Einfügen von Elementen in die Mitte der Liste.
- Erhöhte Speichernutzung: ArrayList benötigt mehr Speicher als Arrays, da es seine dynamische Größe beibehalten und Größenänderungen verarbeiten muss.
- Nicht Thread-sicher: ArrayList ist nicht Thread-sicher, was bedeutet, dass mehrere Threads gleichzeitig auf die Liste zugreifen und diese ändern können, was zu potenziellen Race Conditions und Datenbeschädigung führen kann.
- Leistungseinbußen: Die Leistung von ArrayList kann sich verschlechtern, wenn die Anzahl der Elemente in der Liste zunimmt, insbesondere bei Vorgängen wie der Suche nach Elementen oder dem Einfügen von Elementen in die Mitte der Liste.
Abschluss
Nachfolgend sind die Punkte aufgeführt, die Sie in diesem Artikel beachten sollten:
- ArrayList ist Teil des Collections-Frameworks. Es erbt die AbstractList-Klasse und implementiert die List-Schnittstelle.
- ArrayList ist die Implementierung eines dynamischen Arrays.
- ArrayList kann mit verschiedenen Konstruktortypen initialisiert werden, z. B. ohne Parameter, durch Übergabe einer Sammlung als Parameter und durch Übergabe einer Ganzzahl als Parameter.
- Operationen können in ArrayList wie folgt ausgeführt werden: Hinzufügen, Entfernen, Iterieren und Sortieren.
FAQs zu ArrayList
Was ist eine ArrayList in Java?
ArrayList in Java ist Teil des Collections-Frameworks. Es wird zum Speichern von Elementen verwendet und die Größe ist veränderbar.
Wie werden Daten in ArrayList gespeichert?
ArrayList kann Daten speichern, bis die ArrayList-Größe voll ist. Danach wird die Größe von ArrayList verdoppelt, wenn wir weitere Elemente speichern möchten.
Erlaubt ArrayList Duplikate?
Ja, ArrayList ermöglicht das Speichern doppelter Werte.