Java Anordnungsliste Klasse verwendet a dynamisch Array zur Aufbewahrung der Elemente. Es ist wie ein Array, aber es gibt eines keine Größenbeschränkung . Wir können jederzeit Elemente hinzufügen oder entfernen. Daher ist es viel flexibler als das herkömmliche Array. Es befindet sich in der java.util Paket. Es ist wie der Vektor in C++.
Die ArrayList in Java kann auch doppelte Elemente enthalten. Es implementiert die List-Schnittstelle, sodass wir hier alle Methoden der List-Schnittstelle verwenden können. Die ArrayList behält die Einfügereihenfolge intern bei.
Es erbt die AbstractList-Klasse und implementiert Listenschnittstelle .
Die wichtigen Punkte zur Java ArrayList-Klasse sind:
- Die Java-ArrayList-Klasse kann doppelte Elemente enthalten.
- Die Java-ArrayList-Klasse behält die Einfügereihenfolge bei.
- Die Java-ArrayList-Klasse ist keine synchronisiert .
- Java ArrayList ermöglicht einen wahlfreien Zugriff, da das Array auf Indexbasis arbeitet.
- In ArrayList ist die Manipulation etwas langsamer als in LinkedList in Java, da viele Verschiebungen stattfinden müssen, wenn ein Element aus der Array-Liste entfernt wird.
- Wir können keine Array-Liste der primitiven Typen wie int, float, char usw. erstellen. In solchen Fällen ist es erforderlich, die erforderliche Wrapper-Klasse zu verwenden. Zum Beispiel:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList wird anhand der Größe initialisiert. Die Größe in der Array-Liste ist dynamisch und variiert je nachdem, welche Elemente zur Liste hinzugefügt oder daraus entfernt werden.
Hierarchie der ArrayList-Klasse
Wie im obigen Diagramm gezeigt, erweitert die Java-ArrayList-Klasse die AbstractList-Klasse, die die List-Schnittstelle implementiert. Die List-Schnittstelle erweitert die Sammlung und iterierbare Schnittstellen in hierarchischer Reihenfolge.
Deklaration der ArrayList-Klasse
Sehen wir uns die Deklaration für die Klasse java.util.ArrayList an.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
Konstruktoren von ArrayList
Konstrukteur | Beschreibung |
---|---|
Anordnungsliste() | Es wird verwendet, um eine leere Array-Liste zu erstellen. |
ArrayList(Sammlung c) | Es wird verwendet, um eine Array-Liste zu erstellen, die mit den Elementen der Sammlung c initialisiert wird. |
ArrayList(int Kapazität) | Es wird verwendet, um eine Array-Liste mit der angegebenen Anfangskapazität zu erstellen. |
Methoden von ArrayList
Methode | Beschreibung |
---|---|
Leere hinzufügen (int-Index, E-Element) | Es wird verwendet, um das angegebene Element an der angegebenen Position in einer Liste einzufügen. |
Boolescher Wert hinzufügen (Und und) | Es wird verwendet, um das angegebene Element am Ende einer Liste anzuhängen. |
boolean addAll (Sammlung c) | Es wird verwendet, um alle Elemente in der angegebenen Sammlung an das Ende dieser Liste anzuhängen, und zwar in der Reihenfolge, in der sie vom Iterator der angegebenen Sammlung zurückgegeben werden. |
boolean addAll (int index, Collection c) | Es wird verwendet, um alle Elemente in der angegebenen Sammlung anzuhängen, beginnend an der angegebenen Position der Liste. |
void klar () | Es wird verwendet, um alle Elemente aus dieser Liste zu entfernen. |
void secureCapacity(int requireCapacity) | Es wird verwendet, um die Kapazität einer ArrayList-Instanz zu erhöhen. |
E get(int index) | Es wird verwendet, um das Element von der bestimmten Position der Liste abzurufen. |
boolean isEmpty() | Es gibt true zurück, wenn die Liste leer ist, andernfalls false. |
Iterator() | |
listIterator() | |
int lastIndexOf(Object o) | Es wird verwendet, um den Index des letzten Vorkommens des angegebenen Elements in dieser Liste zurückzugeben, oder -1, wenn die Liste dieses Element nicht enthält. |
Object[] toArray() | Es wird verwendet, um ein Array zurückzugeben, das alle Elemente dieser Liste in der richtigen Reihenfolge enthält. |
T[] toArray(T[] a) | Es wird verwendet, um ein Array zurückzugeben, das alle Elemente dieser Liste in der richtigen Reihenfolge enthält. |
Objektklon() | Es wird verwendet, um eine flache Kopie einer ArrayList zurückzugeben. |
boolean enthält(Objekt o) | Es gibt true zurück, wenn die Liste das angegebene Element enthält. |
int indexOf(Object o) | Es wird verwendet, um den Index des ersten Vorkommens des angegebenen Elements in dieser Liste zurückzugeben, oder -1, wenn die Liste dieses Element nicht enthält. |
E entfernen(int index) | Es wird verwendet, um das an der angegebenen Position in der Liste vorhandene Element zu entfernen. |
boolescher Wert entfernen (Objekt o) | Es wird verwendet, um das erste Vorkommen des angegebenen Elements zu entfernen. |
boolescher Wert „removeAll“ (Sammlung c) | Es wird verwendet, um alle Elemente aus der Liste zu entfernen. |
boolean removeIf(Prädikatfilter) | Es wird verwendet, um alle Elemente aus der Liste zu entfernen, die das angegebene Prädikat erfüllen. |
protected void removeRange (int fromIndex, int toIndex) | Es wird verwendet, um alle Elemente zu entfernen, die innerhalb des angegebenen Bereichs liegen. |
void replaceAll(UnaryOperator-Operator) | Es wird verwendet, um alle Elemente aus der Liste durch das angegebene Element zu ersetzen. |
void retainAll (Sammlung c) | Es wird verwendet, um alle Elemente in der Liste beizubehalten, die in der angegebenen Sammlung vorhanden sind. |
E set(int index, E element) | Es wird verwendet, um das angegebene Element in der Liste zu ersetzen, das an der angegebenen Position vorhanden ist. |
Leere Sortierung (Komparator c) | Es wird verwendet, um die Elemente der Liste auf der Grundlage des angegebenen Komparators zu sortieren. |
Spliterator spliterator() | Es wird verwendet, um einen Spliterator für die Elemente in einer Liste zu erstellen. |
Liste subList(int fromIndex, int toIndex) | Es wird verwendet, um alle Elemente abzurufen, die innerhalb des angegebenen Bereichs liegen. |
int size() | Es wird verwendet, um die Anzahl der in der Liste vorhandenen Elemente zurückzugeben. |
void trimToSize() | Es wird verwendet, um die Kapazität dieser ArrayList-Instanz auf die aktuelle Größe der Liste zu reduzieren. |
Nicht-generisches Java vs. Java Generische Sammlung
Das Java Collection Framework war vor JDK 1.5 nicht generisch. Seit 1.5 ist es generisch.
c# enthält eine Zeichenfolge
Mit der neuen generischen Java-Sammlung können Sie nur einen Objekttyp in einer Sammlung haben. Jetzt ist es typsicher, sodass zur Laufzeit keine Typumwandlung erforderlich ist.
Sehen wir uns das alte, nicht generische Beispiel für die Erstellung einer Java-Sammlung an.
ArrayList list=new ArrayList();//creating old non-generic arraylist
Sehen wir uns das neue generische Beispiel für die Erstellung einer Java-Sammlung an.
ArrayList list=new ArrayList();//creating new generic arraylist
In einer generischen Sammlung geben wir den Typ in eckigen Klammern an. Jetzt muss ArrayList den einzigen angegebenen Objekttyp enthalten. Wenn Sie versuchen, einen anderen Objekttyp hinzuzufügen, wird ein angezeigt Fehler bei der Kompilierung .
Weitere Informationen zu Java-Generika finden Sie hier Java Generics-Tutorial .
Beispiel für eine Java-ArrayList
Dateiname: ArrayListExample1.java
import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } }Testen Sie es jetzt
Ausgabe:
[Mango, Apple, Banana, Grapes]
ArrayList mit Iterator iterieren
Sehen wir uns ein Beispiel zum Durchlaufen von ArrayList-Elementen mithilfe der Iterator-Schnittstelle an.
Dateiname: ArrayListExample2.java
import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } }Testen Sie es jetzt
Ausgabe:
Mango Apple Banana Grapes
Iterieren von ArrayList mithilfe der For-each-Schleife
Sehen wir uns ein Beispiel zum Durchlaufen der ArrayList-Elemente mithilfe der for-each-Schleife an
Dateiname: ArrayListExample3.java
import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } }
Ausgabe:
Testen Sie es jetztMango Apple Banana Grapes
ArrayList abrufen und festlegen
Der get()-Methode gibt das Element am angegebenen Index zurück, während die set()-Methode ändert das Element.
Dateiname: ArrayListExample4.java
import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } }Testen Sie es jetzt
Ausgabe:
Returning element: Apple Mango Dates Banana Grapes
So sortieren Sie ArrayList
Der java.util Das Paket stellt eine Dienstprogrammklasse bereit Sammlungen , die über die statische Methode sort() verfügt. Verwendung der Collections.sort() Mit der Methode können wir die ArrayList einfach sortieren.
Dateiname: SortArrayList.java
import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } }
Ausgabe:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Möglichkeiten zum Iterieren der Elemente der Sammlung in Java
Es gibt verschiedene Möglichkeiten, die Sammlungselemente zu durchlaufen:
- Über die Iterator-Schnittstelle.
- Durch for-each-Schleife.
- Über die ListIterator-Schnittstelle.
- Durch for-Schleife.
- Mit der forEach()-Methode.
- Mit der forEachRemaining()-Methode.
Iterieren der Sammlung über die verbleibenden Wege
Sehen wir uns ein Beispiel an, um die ArrayList-Elemente auf andere Weise zu durchlaufen
lexikographische Ordnung
Dateiname: ArrayList4.java
import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); System.out.println('Traversing list through List Iterator:'); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println('Traversing list through for loop:'); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println('Traversing list through forEachRemaining() method:'); Iterator itr=list.iterator(); itr.forEachRemaining(a-> //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>
Ausgabe:
Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay
Benutzerdefinierte Klassenobjekte in Java ArrayList
Sehen wir uns ein Beispiel an, in dem wir ein Student-Klassenobjekt in einer Array-Liste speichern.
Dateiname: ArrayList5.java
class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } }
import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,'Sonoo',23); Student s2=new Student(102,'Ravi',21); Student s2=new Student(103,'Hanumat',25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Ausgabe:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Beispiel für die Serialisierung und Deserialisierung von Java ArrayList
Sehen wir uns ein Beispiel für die Serialisierung und anschließende Deserialisierung eines ArrayList-Objekts an.
Dateiname: ArrayList6.java
import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); try { //Serialization FileOutputStream fos=new FileOutputStream('file'); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream('file'); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } }
Ausgabe:
[Ravi, Vijay, Ajay]
Java ArrayList-Beispiel zum Hinzufügen von Elementen
Hier sehen wir verschiedene Möglichkeiten, ein Element hinzuzufügen.
Dateiname: ArrayList7.java
import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println('Initial list of elements: '+al); //Adding elements to the end of the list al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After invoking add(E e) method: '+al); //Adding an element at the specific position al.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+al); ArrayList al2=new ArrayList(); al2.add('Sonoo'); al2.add('Hanumat'); //Adding second list elements to the first list al.addAll(al2); System.out.println('After invoking addAll(Collection c) method: '+al); ArrayList al3=new ArrayList(); al3.add('John'); al3.add('Rahul'); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println('After invoking addAll(int index, Collection c) method: '+al); } }
Ausgabe:
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat]
Java ArrayList-Beispiel zum Entfernen von Elementen
Hier sehen wir verschiedene Möglichkeiten, ein Element zu entfernen.
pd.merge
Dateiname: ArrayList8.java
import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); al.add('Anuj'); al.add('Gaurav'); System.out.println('An initial list of elements: '+al); //Removing specific element from arraylist al.remove('Vijay'); System.out.println('After invoking remove(object) method: '+al); //Removing element on the basis of specific position al.remove(0); System.out.println('After invoking remove(index) method: '+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); //Adding new elements to arraylist al.addAll(al2); System.out.println('Updated list : '+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println('After invoking removeAll() method: '+al); //Removing elements on the basis of specified condition al.removeIf(str -> str.contains('Ajay')); //Here, we are using Lambda expression System.out.println('After invoking removeIf() method: '+al); //Removing all the elements available in the list al.clear(); System.out.println('After invoking clear() method: '+al); } }
Ausgabe:
An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: []
Java ArrayList-Beispiel für die retainAll()-Methode
Dateiname: ArrayList9.java
import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); al.retainAll(al2); System.out.println('iterating the elements after retaining the elements of al2'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Ausgabe:
iterating the elements after retaining the elements of al2 Ravi
Java ArrayList-Beispiel für die isEmpty()-Methode
Dateiname: ArrayList4.java
import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println('Is ArrayList Empty: '+al.isEmpty()); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After Insertion'); System.out.println('Is ArrayList Empty: '+al.isEmpty()); } }
Ausgabe:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Beispiel für eine Java-ArrayList: Buch
Sehen wir uns ein ArrayList-Beispiel an, in dem wir Bücher zur Liste hinzufügen und alle Bücher drucken.
Dateiname: ArrayListExample20.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayListExample20 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications and Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Testen Sie es jetzt
Ausgabe:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Größe und Kapazität einer ArrayList
Größe und Kapazität einer Array-Liste sind die beiden Begriffe, die Anfänger verwirrend finden. Lassen Sie es uns in diesem Abschnitt anhand einiger Beispiele verstehen. Betrachten Sie den folgenden Codeausschnitt.
Dateiname: SizeCapacity.java
import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println('The size of the array is: ' + al.size()); } }
Ausgabe:
The size of the array is: 0
Erläuterung: Die Ausgabe macht Sinn, da wir noch nichts mit der Array-Liste gemacht haben. Beobachten Sie nun das folgende Programm.
Dateiname: SizeCapacity1.java
import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println('The size of the array is: ' + al.size()); } }
Ausgabe:
The size of the array is: 0
Erläuterung: Wir sehen, dass die Größe immer noch 0 ist, und der Grund dafür ist, dass die Zahl 10 die Kapazität und nicht die Größe darstellt. Tatsächlich stellt die Größe die Gesamtzahl der im Array vorhandenen Elemente dar. Da wir kein Element hinzugefügt haben, ist die Größe der Array-Liste in beiden Programmen Null.
Die Kapazität stellt die Gesamtzahl der Elemente dar, die die Array-Liste enthalten kann. Daher ist die Kapazität einer Array-Liste immer größer oder gleich der Größe der Array-Liste. Wenn wir der Array-Liste ein Element hinzufügen, prüft es, ob die Größe der Array-Liste der Kapazität entspricht oder nicht. Wenn ja, erhöht sich die Kapazität der Array-Liste. Im obigen Beispiel beträgt die Kapazität also 10, bis 10 Elemente zur Liste hinzugefügt werden. Wenn wir die 11 hinzufügenThElement erhöht sich die Kapazität. Beachten Sie, dass in beiden Beispielen die Kapazität der Array-Liste 10 beträgt. Im ersten Fall beträgt die Kapazität 10, da die Standardkapazität der Array-Liste 10 beträgt. Im zweiten Fall haben wir die Kapazität des Arrays ausdrücklich erwähnt Liste ist 10.
Hinweis: Es gibt keine Standardmethode, um festzustellen, wie sich die Kapazität in der Array-Liste erhöht. Tatsächlich variiert die Art und Weise, wie die Kapazität erhöht wird, von einer GDK-Version zur anderen. Daher muss überprüft werden, wie der Code zur Kapazitätserhöhung im GDK implementiert wird. In der ArrayList-Klasse gibt es keine vordefinierte Methode, die die Kapazität der Array-Liste zurückgibt. Verwenden Sie daher zum besseren Verständnis die Methode Capacity() der Klasse Vector. Die Logik der Größe und Kapazität ist in der ArrayList-Klasse und der Vector-Klasse dieselbe.
Verwandte Themen
So sortieren Sie ArrayList in Java
Unterschied zwischen Array und ArrayList
Wann werden ArrayList und LinkedList in Java verwendet?
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen ArrayList und Vector
So vergleichen Sie zwei ArrayList in Java
So kehren Sie ArrayList in Java um
Wann werden ArrayList und LinkedList in Java verwendet?
So machen Sie ArrayList schreibgeschützt
Unterschied zwischen der Länge des Arrays und size() von ArrayList in Java
So synchronisieren Sie ArrayList in Java
So konvertieren Sie ArrayList in Array und Array in ArrayList in Java
Array vs. ArrayList in Java
So sortieren Sie Java ArrayList in absteigender Reihenfolge
Wann beginnt Q2?
So entfernen Sie Duplikate aus ArrayList in Java