Java ArrayLijst klasse gebruikt a dynamisch reeks voor het opbergen van de elementen. Het lijkt op een array, maar die is er geen maximale grootte . We kunnen op elk moment elementen toevoegen of verwijderen. Het is dus veel flexibeler dan de traditionele array. Het is te vinden in de java.util pakket. Het is als de Vector in C++.
De ArrayList in Java kan ook dubbele elementen bevatten. Het implementeert de Lijst-interface, zodat we hier alle methoden van de Lijst-interface kunnen gebruiken. De ArrayList houdt de invoegvolgorde intern bij.
Het erft de klasse AbstractList en implementeert Lijstinterface .
De belangrijke punten over de klasse Java ArrayList zijn:
- De Java ArrayList-klasse kan dubbele elementen bevatten.
- De Java ArrayList-klasse handhaaft de invoegvolgorde.
- De Java ArrayList-klasse is niet gesynchroniseerd .
- Java ArrayList maakt willekeurige toegang mogelijk omdat de array op indexbasis werkt.
- In ArrayList is de manipulatie iets langzamer dan bij LinkedList in Java, omdat er veel verschuivingen moeten plaatsvinden als een element uit de arraylijst wordt verwijderd.
- We kunnen geen arraylijst maken van de primitieve typen, zoals int, float, char, enz. In dergelijke gevallen is het vereist om de vereiste wrapper-klasse te gebruiken. Bijvoorbeeld:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList wordt geïnitialiseerd op basis van de grootte. De grootte is dynamisch in de arraylijst, en varieert afhankelijk van de elementen die worden toegevoegd of verwijderd uit de lijst.
Hiërarchie van de ArrayList-klasse
Zoals weergegeven in het bovenstaande diagram, breidt de klasse Java ArrayList de klasse AbstractList uit, die de List-interface implementeert. De Lijst-interface breidt de Verzameling en itereerbare interfaces in hiërarchische volgorde.
ArrayList-klassedeclaratie
Laten we de declaratie voor de klasse java.util.ArrayList bekijken.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
Constructeurs van ArrayList
Constructeur | Beschrijving |
---|---|
ArrayLijst() | Het wordt gebruikt om een lege arraylijst samen te stellen. |
ArrayList(Verzameling c) | Het wordt gebruikt om een arraylijst samen te stellen die wordt geïnitialiseerd met de elementen van de verzameling c. |
ArrayList(int-capaciteit) | Het wordt gebruikt om een arraylijst samen te stellen die de opgegeven initiële capaciteit heeft. |
Methoden van ArrayList
Methode | Beschrijving |
---|---|
leegte toevoegen (int index, E-element) | Het wordt gebruikt om het opgegeven element op de opgegeven positie in een lijst in te voegen. |
Booleaans toevoegen (En en) | Het wordt gebruikt om het opgegeven element aan het einde van een lijst toe te voegen. |
boolean addAll (verzameling c) | Het wordt gebruikt om alle elementen in de opgegeven verzameling aan het einde van deze lijst toe te voegen, in de volgorde waarin ze worden geretourneerd door de iterator van de opgegeven verzameling. |
boolean addAll (int index, verzameling c) | Het wordt gebruikt om alle elementen in de opgegeven verzameling toe te voegen, beginnend bij de opgegeven positie in de lijst. |
leegte duidelijk () | Het wordt gebruikt om alle elementen uit deze lijst te verwijderen. |
void sureCapacity(int vereistCapaciteit) | Het wordt gebruikt om de capaciteit van een ArrayList-instantie te vergroten. |
E get(int-index) | Het wordt gebruikt om het element van de specifieke positie in de lijst op te halen. |
booleaanse waarde isLeeg() | Het retourneert waar als de lijst leeg is, anders onwaar. |
Iterator() | |
lijstIterator() | |
int laatsteIndexOf(Object o) | Het wordt gebruikt om de index in deze lijst te retourneren van de laatste keer dat het opgegeven element voorkomt, of -1 als de lijst dit element niet bevat. |
Object[] naarArray() | Het wordt gebruikt om een array terug te geven die alle elementen in deze lijst in de juiste volgorde bevat. |
T[] naarArray(T[] a) | Het wordt gebruikt om een array terug te geven die alle elementen in deze lijst in de juiste volgorde bevat. |
Objectkloon() | Het wordt gebruikt om een ondiepe kopie van een ArrayList terug te geven. |
booleaanse waarde bevat(Object o) | Het retourneert waar als de lijst het opgegeven element bevat. |
int indexOf(Object o) | Het wordt gebruikt om de index in deze lijst te retourneren van de eerste keer dat het opgegeven element voorkomt, of -1 als de lijst dit element niet bevat. |
E verwijder(int index) | Het wordt gebruikt om het element dat aanwezig is op de opgegeven positie in de lijst te verwijderen. |
boolean verwijderen (Object o) | Het wordt gebruikt om de eerste keer dat het opgegeven element voorkomt te verwijderen. |
boolean removeAll (verzameling c) | Het wordt gebruikt om alle elementen uit de lijst te verwijderen. |
boolean removeIf(Predikaatfilter) | Het wordt gebruikt om alle elementen uit de lijst te verwijderen die aan het gegeven predikaat voldoen. |
beschermde leegte removeRange (int fromIndex, int toIndex) | Het wordt gebruikt om alle elementen binnen het opgegeven bereik te verwijderen. |
void ReplaceAll(UnaryOperator-operator) | Het wordt gebruikt om alle elementen uit de lijst te vervangen door het opgegeven element. |
void holdAll (verzameling c) | Het wordt gebruikt om alle elementen in de lijst te behouden die aanwezig zijn in de opgegeven verzameling. |
E set(int index, E-element) | Het wordt gebruikt om het opgegeven element in de lijst, aanwezig op de opgegeven positie, te vervangen. |
ongeldig sorteren (vergelijker c) | Het wordt gebruikt om de elementen van de lijst te sorteren op basis van de opgegeven comparator. |
Splitser splitser() | Het wordt gebruikt om een spliterator over de elementen in een lijst te maken. |
SubLijst weergeven(int vanIndex, int naarIndex) | Het wordt gebruikt om alle elementen op te halen die binnen het opgegeven bereik liggen. |
int-grootte() | Het wordt gebruikt om het aantal elementen in de lijst terug te geven. |
void trimToSize() | Het wordt gebruikt om de capaciteit van deze ArrayList-instantie in te korten tot de huidige grootte van de lijst. |
Java Niet-generiek vs. Generieke collectie
Het Java-verzamelingsframework was vóór JDK 1.5 niet-generiek. Sinds 1.5 is het generiek.
Met de nieuwe generieke Java-collectie kunt u slechts één type object in een verzameling hebben. Nu is het typeveilig, dus typecasting is tijdens runtime niet vereist.
Laten we eens kijken naar het oude, niet-generieke voorbeeld van het maken van een Java-collectie.
ArrayList list=new ArrayList();//creating old non-generic arraylist
Laten we het nieuwe generieke voorbeeld bekijken van het maken van een Java-collectie.
ArrayList list=new ArrayList();//creating new generic arraylist
Bij een generieke verzameling specificeren we het type in hoekschoren. Nu wordt ArrayList gedwongen om het enige gespecificeerde type object erin te hebben. Als u een ander type object probeert toe te voegen, geeft dit een fout tijdens het compileren .
Klik hier voor meer informatie over generieke Java-geneesmiddelen Java generieke handleiding .
Java ArrayList-voorbeeld
Bestandsnaam: 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); } }Test het nu
Uitgang:
[Mango, Apple, Banana, Grapes]
ArrayList herhalen met Iterator
Laten we een voorbeeld bekijken om ArrayList-elementen te doorlopen met behulp van de Iterator-interface.
Bestandsnaam: ArrayListExample2.java
substring-methode in 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 } } }Test het nu
Uitgang:
Mango Apple Banana Grapes
ArrayList herhalen met For-each-lus
Laten we een voorbeeld bekijken om de ArrayList-elementen te doorlopen met behulp van de for-each-lus
Bestandsnaam: 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); } }
Uitgang:
Test het nuMango Apple Banana Grapes
ArrayList ophalen en instellen
De get() methode retourneert het element op de opgegeven index, terwijl de set() methode verandert het element.
Bestandsnaam: 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); } }Test het nu
Uitgang:
Returning element: Apple Mango Dates Banana Grapes
Hoe ArrayList te sorteren
De java.util pakket biedt een nutsklasse Collecties , die de statische methode sort() heeft. De ... gebruiken Collecties.sort() methode, kunnen we de ArrayList eenvoudig sorteren.
Bestandsnaam: 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); } }
Uitgang:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Manieren om de elementen van de collectie in Java te herhalen
Er zijn verschillende manieren om de collectie-elementen te doorlopen:
- Via Iterator-interface.
- Door voor-elke lus.
- Via ListIterator-interface.
- Door for-lus.
- Door de methode forEach().
- Door de methode forEachRemaining().
Itererende verzameling via de resterende manieren
Laten we een voorbeeld bekijken om de ArrayList-elementen op andere manieren te doorlopen
Bestandsnaam: 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++)>
Uitgang:
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
Door de gebruiker gedefinieerde klasseobjecten in Java ArrayList
Laten we een voorbeeld bekijken waarin we het Student-klasseobject opslaan in een arraylijst.
Bestandsnaam: 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); } } }
Uitgang:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Voorbeeld van Java ArrayList-serialisatie en deserialisatie
Laten we een voorbeeld bekijken van het serialiseren van een ArrayList-object en het vervolgens deserialiseren.
Bestandsnaam: 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); } } }
Uitgang:
[Ravi, Vijay, Ajay]
Java ArrayList-voorbeeld om elementen toe te voegen
Hier zien we verschillende manieren om een element toe te voegen.
Bestandsnaam: 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); } }
Uitgang:
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-voorbeeld om elementen te verwijderen
Hier zien we verschillende manieren om een element te verwijderen.
Bestandsnaam: 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); } }
Uitgang:
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-voorbeeld van de methode retainAll().
Bestandsnaam: ArrayList9.java
java do while-lus
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()); } } }
Uitgang:
iterating the elements after retaining the elements of al2 Ravi
Java ArrayList-voorbeeld van de isEmpty()-methode
Bestandsnaam: 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()); } }
Uitgang:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Java ArrayList Voorbeeld: Boek
Laten we een ArrayList-voorbeeld bekijken waarin we boeken aan de lijst toevoegen en alle boeken afdrukken.
Bestandsnaam: 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); } } }Test het nu
Uitgang:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Grootte en capaciteit van een ArrayList
Grootte en capaciteit van een arraylijst zijn de twee termen die beginners verwarrend vinden. Laten we het in deze sectie begrijpen met behulp van enkele voorbeelden. Bekijk het volgende codefragment.
Bestandsnaam: 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()); } }
Uitgang:
The size of the array is: 0
Uitleg: De uitvoer is logisch omdat we niets met de arraylijst hebben gedaan. Neem nu het volgende programma in acht.
Bestandsnaam: GrootteCapaciteit1.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()); } }
Uitgang:
The size of the array is: 0
Uitleg: We zien dat de maat nog steeds 0 is, en de reden hierachter is dat het getal 10 de capaciteit vertegenwoordigt en niet de maat. In feite vertegenwoordigt de grootte het totale aantal elementen dat in de array aanwezig is. Omdat we geen enkel element hebben toegevoegd, is de grootte van de arraylijst in beide programma's nul.
Capaciteit vertegenwoordigt het totale aantal elementen dat de arraylijst kan bevatten. Daarom is de capaciteit van een arraylijst altijd groter dan of gelijk aan de grootte van de arraylijst. Wanneer we een element aan de arraylijst toevoegen, wordt gecontroleerd of de grootte van de arraylijst gelijk is geworden aan de capaciteit of niet. Zo ja, dan neemt de capaciteit van de arraylijst toe. In het bovenstaande voorbeeld zal de capaciteit dus 10 zijn, totdat er 10 elementen aan de lijst worden toegevoegd. Wanneer we de 11 toevoegeneelement neemt de capaciteit toe. Merk op dat in beide voorbeelden de capaciteit van de arraylijst 10 is. In het eerste geval is de capaciteit 10 omdat de standaardcapaciteit van de arraylijst 10 is. In het tweede geval hebben we expliciet vermeld dat de capaciteit van de array lijst is 10.
Opmerking: er bestaat geen standaardmethode om aan te geven hoe de capaciteit in de arraylijst toeneemt. In feite varieert de manier waarop de capaciteit toeneemt van de ene GDK-versie tot de andere versie. Daarom is het vereist om te controleren hoe de code voor capaciteitsverhoging in de GDK wordt geïmplementeerd. Er is geen vooraf gedefinieerde methode in de klasse ArrayList die de capaciteit van de arraylijst retourneert. Gebruik daarom voor een beter begrip de methode Capacity() van de klasse Vector. De logica van de grootte en de capaciteit is hetzelfde in de ArrayList-klasse en de Vector-klasse.
Gerelateerde onderwerpen
Hoe ArrayList in Java te sorteren
Verschil tussen Array en ArrayList
Wanneer moet u ArrayList en LinkedList gebruiken in Java?
Verschil tussen ArrayList en LinkedList
Verschil tussen ArrayList en Vector
Hoe twee ArrayList in Java te vergelijken
Hoe ArrayList in Java om te keren
Wanneer moet u ArrayList en LinkedList gebruiken in Java?
Hoe ArrayList alleen-lezen te maken
Verschil tussen de lengte van de array en size() van ArrayList in Java
Hoe ArrayList in Java te synchroniseren
Hoe ArrayList naar Array en Array naar ArrayList in Java te converteren
Array versus ArrayList in Java
Hoe Java ArrayList in aflopende volgorde te sorteren
Hoe duplicaten uit ArrayList in Java te verwijderen