logo

Java ArrayList

Java ArrayList klassehierarki

Java ArrayList klasse bruker a dynamisk array for oppbevaring av elementene. Det er som en rekke, men det er det ingen størrelsesbegrensning . Vi kan legge til eller fjerne elementer når som helst. Så den er mye mer fleksibel enn den tradisjonelle matrisen. Den finnes i java.util pakke. Det er som vektoren i C++.

ArrayList i Java kan også ha de dupliserte elementene. Den implementerer List-grensesnittet slik at vi kan bruke alle metodene til List-grensesnittet her. ArrayList opprettholder innsettingsrekkefølgen internt.

Den arver AbstractList-klassen og implementerer Listegrensesnitt .

De viktige punktene om Java ArrayList-klassen er:

  • Java ArrayList-klassen kan inneholde dupliserte elementer.
  • Java ArrayList-klassen opprettholder innsettingsrekkefølge.
  • Java ArrayList-klassen er ikke synkronisert .
  • Java ArrayList tillater tilfeldig tilgang fordi arrayet fungerer på indeksbasis.
  • I ArrayList er manipulasjon litt tregere enn LinkedList i Java fordi det må skje mye forskyvning hvis et element fjernes fra arraylisten.
  • Vi kan ikke lage en matriseliste over de primitive typene, slik som int, float, char osv. Det er påkrevd å bruke den nødvendige wrapperklassen i slike tilfeller. For eksempel:
 ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine 
  • Java ArrayList blir initialisert av størrelsen. Størrelsen er dynamisk i matriselisten, som varierer i henhold til elementene som blir lagt til eller fjernet fra listen.

Hierarki av ArrayList-klassen

Som vist i diagrammet ovenfor, utvider Java ArrayList-klassen AbstractList-klassen som implementerer List-grensesnittet. Liste-grensesnittet utvider Samling og Iterable grensesnitt i hierarkisk rekkefølge.

ArrayList klasseerklæring

La oss se erklæringen for java.util.ArrayList-klassen.

 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 

Konstruktører av ArrayList

Konstruktør Beskrivelse
ArrayList() Den brukes til å bygge en tom matriseliste.
ArrayList (Samling c) Den brukes til å bygge en matriseliste som er initialisert med elementene i samlingen c.
ArrayList (int kapasitet) Den brukes til å bygge en matriseliste som har den spesifiserte startkapasiteten.

Metoder for ArrayList

Metode Beskrivelse
tomrom Legg til (int-indeks, E-element) Den brukes til å sette inn det angitte elementet på den angitte posisjonen i en liste.
boolsk Legg til (Og og) Den brukes til å legge til det angitte elementet på slutten av en liste.
boolesk addAll (samling c) Den brukes til å legge til alle elementene i den angitte samlingen til slutten av denne listen, i den rekkefølgen de returneres av den angitte samlingens iterator.
boolesk addAll (int index, samling c) Den brukes til å legge til alle elementene i den angitte samlingen, og starter på den angitte posisjonen på listen.
void clear () Den brukes til å fjerne alle elementene fra denne listen.
void sikreCapacity(int requiredCapacity) Den brukes til å forbedre kapasiteten til en ArrayList-forekomst.
E get(int indeks) Den brukes til å hente elementet fra den spesielle posisjonen på listen.
boolsk er tom() Den returnerer sann hvis listen er tom, ellers usann.
Iterator()
listIterator()
int lastIndexOf(Objekt o) Den brukes til å returnere indeksen i denne listen over siste forekomst av det angitte elementet, eller -1 hvis listen ikke inneholder dette elementet.
Objekt[] tilArray() Den brukes til å returnere en matrise som inneholder alle elementene i denne listen i riktig rekkefølge.
T[] tilArray(T[] a) Den brukes til å returnere en matrise som inneholder alle elementene i denne listen i riktig rekkefølge.
Objekt klone() Den brukes til å returnere en grunn kopi av en ArrayList.
boolsk inneholder(Objekt o) Den returnerer true hvis listen inneholder det angitte elementet.
int indeksOf(Objekt o) Den brukes til å returnere indeksen i denne listen for den første forekomsten av det spesifiserte elementet, eller -1 hvis listen ikke inneholder dette elementet.
E remove(int index) Den brukes til å fjerne elementet som er på den angitte posisjonen i listen.
boolsk fjerning (Objekt o) Den brukes til å fjerne den første forekomsten av det angitte elementet.
boolesk removeAll (Samling c) Den brukes til å fjerne alle elementene fra listen.
boolsk removeIf(predikatfilter) Den brukes til å fjerne alle elementene fra listen som tilfredsstiller det gitte predikatet.
beskyttet void removeRange (int fromIndex, int toIndex) Den brukes til å fjerne alle elementene som ligger innenfor det gitte området.
void replaceAll(UnaryOperator-operatør) Den brukes til å erstatte alle elementene fra listen med det angitte elementet.
void retainAll (Samling c) Den brukes til å beholde alle elementene i listen som finnes i den angitte samlingen.
E sett (int indeks, E element) Den brukes til å erstatte det angitte elementet i listen, tilstede på den angitte posisjonen.
void sortering (komparator c) Den brukes til å sortere elementene i listen på grunnlag av den angitte komparatoren.
Spliterator splitterator() Den brukes til å lage en splitter over elementene i en liste.
List subList(int fromIndex, int toIndex) Den brukes til å hente alle elementene som ligger innenfor det gitte området.
int størrelse() Den brukes til å returnere antall elementer som er tilstede i listen.
void trimToSize() Den brukes til å trimme kapasiteten til denne ArrayList-forekomsten til å være listens gjeldende størrelse.

Java ikke-generisk vs. Generisk samling

Java-samlingsrammeverket var ikke-generisk før JDK 1.5. Siden 1,5 er det generisk.

Java ny generisk samling lar deg ha bare én type objekt i en samling. Nå er den typesikker, så typecasting er ikke nødvendig under kjøring.

La oss se det gamle ikke-generiske eksemplet på å lage en Java-samling.

 ArrayList list=new ArrayList();//creating old non-generic arraylist 

La oss se det nye generiske eksemplet på å lage java-samlinger.

 ArrayList list=new ArrayList();//creating new generic arraylist 

I en generisk samling spesifiserer vi typen i vinkelbukseseler. Nå er ArrayList tvunget til å ha den eneste spesifiserte typen objekt i den. Hvis du prøver å legge til en annen type objekt, gir det en kompileringstidsfeil .

For mer informasjon om generiske Java, klikk her Java Generics veiledning .

Eksempel på Java ArrayList

Filnavn: 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 det nå

Produksjon:

[Mango, Apple, Banana, Grapes] 

Iterering av ArrayList ved hjelp av Iterator

La oss se et eksempel for å krysse ArrayList-elementer ved å bruke Iterator-grensesnittet.

Filnavn: 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 } } } 
Test det nå

Produksjon:

Mango Apple Banana Grapes 

Itererer ArrayList ved å bruke For-each loop

La oss se et eksempel for å krysse ArrayList-elementene ved å bruke for-each-løkken

Filnavn: 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); } } 

Produksjon:

Test det nå
Mango Apple Banana Grapes 

Hent og sett ArrayList

De get() metoden returnerer elementet ved den angitte indeksen, mens set() metode endrer elementet.

Filnavn: 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 det nå

Produksjon:

Returning element: Apple Mango Dates Banana Grapes 

Hvordan sortere ArrayList

De java.util pakken gir en verktøyklasse Samlinger , som har den statiske metoden sort(). Bruker Collections.sort() metode, kan vi enkelt sortere ArrayList.

Filnavn: 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); } } 

Produksjon:

Apple Banana Grapes Mango Sorting numbers... 1 11 21 51 

Måter å iterere elementene i samlingen i Java

Det er forskjellige måter å krysse samlingselementene på:

  1. Med Iterator-grensesnitt.
  2. Ved for hver sløyfe.
  3. Av ListIterator-grensesnitt.
  4. Av for loop.
  5. Ved forEach()-metoden.
  6. Ved forEachRemaining()-metoden.

Itererende samling på gjenværende måter

La oss se et eksempel for å krysse ArrayList-elementene på andre måter

Filnavn: ArrayList4.java

 import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add(&apos;Ravi&apos;);//Adding object in arraylist list.add(&apos;Vijay&apos;); list.add(&apos;Ravi&apos;); list.add(&apos;Ajay&apos;); System.out.println(&apos;Traversing list through List Iterator:&apos;); //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(&apos;Traversing list through for loop:&apos;); 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(&apos;Traversing list through forEachRemaining() method:&apos;); Iterator itr=list.iterator(); itr.forEachRemaining(a-&gt; //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>

Produksjon:

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 

Brukerdefinerte klasseobjekter i Java ArrayList

La oss se et eksempel der vi lagrer Student-klasseobjekt i en matriseliste.

Filnavn: 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,&apos;Sonoo&apos;,23); Student s2=new Student(102,&apos;Ravi&apos;,21); Student s2=new Student(103,&apos;Hanumat&apos;,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+&apos; &apos;+st.name+&apos; &apos;+st.age); } } } 

Produksjon:

 101 Sonoo 23 102 Ravi 21 103 Hanumat 25 

Eksempel på Java ArrayList serialisering og deserialisering

La oss se et eksempel for å serialisere et ArrayList-objekt og deretter deserialisere det.

Filnavn: ArrayList6.java

 import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); try { //Serialization FileOutputStream fos=new FileOutputStream(&apos;file&apos;); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream(&apos;file&apos;); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } } 

Produksjon:

 [Ravi, Vijay, Ajay] 

Java ArrayList eksempel for å legge til elementer

Her ser vi forskjellige måter å legge til et element på.

Filnavn: ArrayList7.java

 import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println(&apos;Initial list of elements: &apos;+al); //Adding elements to the end of the list al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After invoking add(E e) method: &apos;+al); //Adding an element at the specific position al.add(1, &apos;Gaurav&apos;); System.out.println(&apos;After invoking add(int index, E element) method: &apos;+al); ArrayList al2=new ArrayList(); al2.add(&apos;Sonoo&apos;); al2.add(&apos;Hanumat&apos;); //Adding second list elements to the first list al.addAll(al2); System.out.println(&apos;After invoking addAll(Collection c) method: &apos;+al); ArrayList al3=new ArrayList(); al3.add(&apos;John&apos;); al3.add(&apos;Rahul&apos;); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println(&apos;After invoking addAll(int index, Collection c) method: &apos;+al); } } 

Produksjon:

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 eksempel for å fjerne elementer

Her ser vi forskjellige måter å fjerne et element på.

char og int java

Filnavn: ArrayList8.java

 import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); al.add(&apos;Anuj&apos;); al.add(&apos;Gaurav&apos;); System.out.println(&apos;An initial list of elements: &apos;+al); //Removing specific element from arraylist al.remove(&apos;Vijay&apos;); System.out.println(&apos;After invoking remove(object) method: &apos;+al); //Removing element on the basis of specific position al.remove(0); System.out.println(&apos;After invoking remove(index) method: &apos;+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); //Adding new elements to arraylist al.addAll(al2); System.out.println(&apos;Updated list : &apos;+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println(&apos;After invoking removeAll() method: &apos;+al); //Removing elements on the basis of specified condition al.removeIf(str -&gt; str.contains(&apos;Ajay&apos;)); //Here, we are using Lambda expression System.out.println(&apos;After invoking removeIf() method: &apos;+al); //Removing all the elements available in the list al.clear(); System.out.println(&apos;After invoking clear() method: &apos;+al); } } 

Produksjon:

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 eksempel på retainAll()-metoden

Filnavn: ArrayList9.java

 import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); al.retainAll(al2); System.out.println(&apos;iterating the elements after retaining the elements of al2&apos;); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

Produksjon:

 iterating the elements after retaining the elements of al2 Ravi 

Java ArrayList eksempel på isEmpty()-metoden

Filnavn: ArrayList4.java

 import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After Insertion&apos;); System.out.println(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); } } 

Produksjon:

Is ArrayList Empty: true After Insertion Is ArrayList Empty: false 

Java ArrayList Eksempel: Bok

La oss se et ArrayList-eksempel der vi legger til bøker i listen og skriver ut alle bøkene.

Filnavn: 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,&apos;Let us C&apos;,&apos;Yashwant Kanetkar&apos;,&apos;BPB&apos;,8); Book b2=new Book(102,&apos;Data Communications and Networking&apos;,&apos;Forouzan&apos;,&apos;Mc Graw Hill&apos;,4); Book b3=new Book(103,&apos;Operating System&apos;,&apos;Galvin&apos;,&apos;Wiley&apos;,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+&apos; &apos;+b.name+&apos; &apos;+b.author+&apos; &apos;+b.publisher+&apos; &apos;+b.quantity); } } } 
Test det nå

Produksjon:

101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6 

Størrelse og kapasitet til en ArrayList

Størrelsen og kapasiteten til en matriseliste er de to begrepene som nybegynnere synes er forvirrende. La oss forstå det i denne delen ved hjelp av noen eksempler. Tenk på følgende kodebit.

Filnavn: SizeCapacity.java

 import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

Produksjon:

 The size of the array is: 0 

Forklaring: Utgangen gir mening siden vi ikke har gjort noe med matriselisten. Følg nå følgende program.

Filnavn: SizeCapacity1.java

 import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println(&apos;The size of the array is: &apos; + al.size()); } } 

Produksjon:

 The size of the array is: 0 

Forklaring: Vi ser at størrelsen fortsatt er 0, og årsaken bak dette er at tallet 10 representerer kapasiteten no størrelsen. Faktisk representerer størrelsen det totale antallet elementer som er tilstede i matrisen. Siden vi ikke har lagt til noe element, er derfor størrelsen på arraylisten null i begge programmene.

Kapasitet representerer det totale antallet elementer matriselisten kan inneholde. Derfor er kapasiteten til en matriseliste alltid større enn eller lik størrelsen på matriselisten. Når vi legger til et element i arraylisten, sjekker det om størrelsen på arraylisten har blitt lik kapasiteten eller ikke. Hvis ja, øker kapasiteten til matriselisten. Så i eksemplet ovenfor vil kapasiteten være 10 til 10 elementer legges til listen. Når vi legger til 11thelement øker kapasiteten. Merk at i begge eksemplene er kapasiteten til arraylisten 10. I det første tilfellet er kapasiteten 10 fordi standardkapasiteten til arraylisten er 10. I det andre tilfellet har vi eksplisitt nevnt at kapasiteten til arrayen listen er 10.

Merk: Det er ingen standardmetode for å fortelle hvordan kapasiteten øker i matriselisten. Faktisk varierer måten kapasiteten øker på fra én GDK-versjon til den andre versjonen. Derfor er det påkrevd å sjekke måten kapasitetsøkning kode er implementert i GDK. Det er ingen forhåndsdefinert metode i ArrayList-klassen som returnerer kapasiteten til matriselisten. Derfor, for bedre forståelse, bruk kapasitet()-metoden til Vector-klassen. Logikken til størrelsen og kapasiteten er den samme i ArrayList-klassen og Vector-klassen.

Relaterte temaer

Hvordan sortere ArrayList i Java

Forskjellen mellom Array og ArrayList

Når du skal bruke ArrayList og LinkedList i Java

Forskjellen mellom ArrayList og LinkedList

Forskjellen mellom ArrayList og Vector

Hvordan sammenligne Two ArrayList i Java

Hvordan reversere ArrayList i Java

Når du skal bruke ArrayList og LinkedList i Java

Hvordan gjøre ArrayList skrivebeskyttet

Forskjellen mellom lengden på arrayen og size() til ArrayList i Java

Hvordan synkronisere ArrayList i Java

Hvordan konvertere ArrayList til Array og Array til ArrayList i java

Array vs ArrayList i Java

Hvordan sortere Java ArrayList i synkende rekkefølge

Hvordan fjerne duplikater fra ArrayList i Java