logo

Java ArrayList

Ierarhia claselor Java ArrayList

Java ArrayList clasa foloseste a dinamic matrice pentru depozitarea elementelor. Este ca o matrice, dar există fără limită de dimensiune . Putem adăuga sau elimina elemente oricând. Deci, este mult mai flexibil decât matricea tradițională. Se găsește în java.util pachet. Este ca Vectorul din C++.

ArrayList în Java poate avea și elemente duplicate. Implementează interfața Listă astfel încât să putem folosi toate metodele interfeței List aici. ArrayList menține ordinea de inserare intern.

Moștenește clasa AbstractList și implementează Interfață Listă .

Punctele importante despre clasa Java ArrayList sunt:

  • Clasa Java ArrayList poate conține elemente duplicat.
  • Clasa Java ArrayList menține ordinea de inserare.
  • Clasa Java ArrayList nu este sincronizate .
  • Java ArrayList permite accesul aleator deoarece matricea funcționează pe bază de index.
  • În ArrayList, manipularea este puțin mai lentă decât LinkedList în Java, deoarece trebuie să apară o mulțime de schimbări dacă orice element este eliminat din lista de matrice.
  • Nu putem crea o listă de matrice cu tipurile primitive, cum ar fi int, float, char etc. Este necesar să folosim clasa wrapper necesară în astfel de cazuri. De exemplu:
 ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine 
  • Java ArrayList este inițializată după dimensiune. Mărimea este dinamică în lista de matrice, care variază în funcție de elementele adăugate sau eliminate din listă.

Ierarhia clasei ArrayList

După cum se arată în diagrama de mai sus, clasa Java ArrayList extinde clasa AbstractList care implementează interfața List. Interfața List extinde Colectie și interfețe iterabile în ordine ierarhică.

Declarație de clasă ArrayList

Să vedem declarația pentru clasa java.util.ArrayList.

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

Constructorii ArrayList

Constructor Descriere
ArrayList() Este folosit pentru a construi o listă de matrice goală.
ArrayList(Colecția c) Este folosit pentru a construi o listă de matrice care este inițializată cu elementele colecției c.
ArrayList (capacitate int) Este folosit pentru a construi o listă de matrice care are capacitatea inițială specificată.

Metodele ArrayList

Metodă Descriere
gol adăuga (index int, element E) Este folosit pentru a insera elementul specificat la poziția specificată într-o listă.
boolean adăuga (Si si) Este folosit pentru a adăuga elementul specificat la sfârșitul unei liste.
boolean addAll (colecția c) Este folosit pentru a adăuga toate elementele din colecția specificată la sfârșitul acestei liste, în ordinea în care sunt returnate de iteratorul colecției specificate.
boolean addAll (index int, Colecția c) Este folosit pentru a adăuga toate elementele din colecția specificată, începând de la poziția specificată a listei.
gol clar () Este folosit pentru a elimina toate elementele din această listă.
void assureCapacity(int requiredCapacity) Este folosit pentru a îmbunătăți capacitatea unei instanțe ArrayList.
E get(index int) Este folosit pentru a prelua elementul din poziția particulară a listei.
boolean este gol () Returnează adevărat dacă lista este goală, în caz contrar, fals.
Iterator()
listIterator()
int lastIndexOf(Obiect o) Este folosit pentru a returna indexul din această listă a ultimei apariții a elementului specificat, sau -1 dacă lista nu conține acest element.
Object[] toArray() Este folosit pentru a returna o matrice care contine toate elementele din aceasta lista in ordinea corecta.
T[] toArray(T[] a) Este folosit pentru a returna o matrice care contine toate elementele din aceasta lista in ordinea corecta.
Clona obiect() Este folosit pentru a returna o copie superficială a unui ArrayList.
boolean conține (Obiect o) Returnează true dacă lista conține elementul specificat.
int indexOf(Obiect o) Este folosit pentru a returna indexul din această listă a primei apariții a elementului specificat, sau -1 dacă Lista nu conține acest element.
E elimina (index int) Este folosit pentru a elimina elementul prezent la poziția specificată în listă.
Eliminare booleană (Obiect o) Este folosit pentru a elimina prima apariție a elementului specificat.
boolean removeAll (colecția c) Este folosit pentru a elimina toate elementele din listă.
boolean removeIf(filtru predicat) Este folosit pentru a elimina toate elementele din lista care satisface predicatul dat.
protected void removeRange (int fromIndex, int toIndex) Este folosit pentru a elimina toate elementele care se află în intervalul dat.
void replaceAll (operator UnaryOperator) Este folosit pentru a înlocui toate elementele din listă cu elementul specificat.
void retainAll (Colecția c) Este folosit pentru a reține toate elementele din listă care sunt prezente în colecția specificată.
E set (index int, element E) Este folosit pentru a înlocui elementul specificat în listă, prezent la poziția specificată.
sortare nulă (comparator c) Este folosit pentru a sorta elementele listei pe baza comparatorului specificat.
Spliterator spliterator() Este folosit pentru a crea un spliterator peste elementele dintr-o listă.
List subList(int fromIndex, int toIndex) Este folosit pentru a prelua toate elementele care se află în intervalul dat.
dimensiune int() Este folosit pentru a returna numărul de elemente prezente în listă.
void trimToSize() Este folosit pentru a reduce capacitatea acestei instanțe ArrayList pentru a fi dimensiunea curentă a listei.

Java non-generic vs. Colecția generică

Cadrul de colecție Java nu era generic înainte de JDK 1.5. Din 1.5, este generic.

Noua colecție generică Java vă permite să aveți un singur tip de obiect într-o colecție. Acum este sigur de tip, așa că nu este necesară tipărirea în timpul execuției.

Să vedem vechiul exemplu non-generic de creare a unei colecții Java.

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

Să vedem noul exemplu generic de creare a colecției Java.

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

Într-o colecție generică, specificăm tipul în acolade unghiulare. Acum ArrayList este forțat să aibă în el singurul tip specificat de obiect. Dacă încercați să adăugați un alt tip de obiect, acesta dă a eroare de compilare .

Pentru mai multe informații despre genericele Java, faceți clic aici Tutorial Java Generics .

Exemplu Java ArrayList

Nume de fișier: 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); } } 
Testează-l acum

Ieșire:

[Mango, Apple, Banana, Grapes] 

Iterarea ArrayList folosind Iterator

Să vedem un exemplu de parcurgere a elementelor ArrayList folosind interfața Iterator.

Nume de fișier: 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 } } } 
Testează-l acum

Ieșire:

Mango Apple Banana Grapes 

Iterarea ArrayList folosind bucla For-each

Să vedem un exemplu pentru a parcurge elementele ArrayList folosind bucla for-each

Nume de fișier: ArrayListExample3.java

cochilie din nou
 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); } } 

Ieșire:

Testează-l acum
Mango Apple Banana Grapes 

Obțineți și setați ArrayList

The metoda get(). returnează elementul la indexul specificat, în timp ce metoda set(). schimbă elementul.

Nume de fișier: 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); } } 
Testează-l acum

Ieșire:

Returning element: Apple Mango Dates Banana Grapes 

Cum să sortați ArrayList

The java.util pachetul oferă o clasă de utilitate Colecții , care are metoda statică sort(). Folosind Collections.sort() metoda, putem sorta cu ușurință ArrayList.

Nume de fișier: 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); } } 

Ieșire:

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

Modalități de a repeta elementele colecției în Java

Există diferite moduri de a parcurge elementele colecției:

  1. Prin interfața Iterator.
  2. Prin for-fiecare buclă.
  3. Prin interfața ListIterator.
  4. Prin bucla for.
  5. Prin metoda forEach().
  6. Prin metoda forEachRemaining().

Iterarea colecției prin căile rămase

Să vedem un exemplu pentru a parcurge elementele ArrayList prin alte moduri

Nume de fișier: 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++)>

Ieșire:

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 

Obiecte de clasă definite de utilizator în Java ArrayList

Să vedem un exemplu în care stocăm obiectul clasei Student într-o listă de matrice.

Nume de fișier: 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); } } } 

Ieșire:

 101 Sonoo 23 102 Ravi 21 103 Hanumat 25 

Exemplu de serializare și deserializare Java ArrayList

Să vedem un exemplu pentru a serializa un obiect ArrayList și apoi a-l deserializa.

Nume de fișier: 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); } } } 

Ieșire:

 [Ravi, Vijay, Ajay] 

Exemplu Java ArrayList pentru a adăuga elemente

Aici, vedem diferite moduri de a adăuga un element.

Nume de fișier: 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); } } 

Ieșire:

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] 

Exemplu Java ArrayList pentru a elimina elemente

Aici, vedem diferite moduri de a elimina un element.

parcurgerea în prealabil a unui arbore

Nume de fișier: 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); } } 

Ieșire:

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: [] 

Exemplu Java ArrayList de metoda retainAll().

Nume de fișier: 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()); } } } 

Ieșire:

 iterating the elements after retaining the elements of al2 Ravi 

Exemplu Java ArrayList de metoda isEmpty().

Nume de fișier: 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()); } } 

Ieșire:

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

Exemplu Java ArrayList: Carte

Să vedem un exemplu ArrayList în care adăugăm cărți la listă și tipărim toate cărțile.

Nume de fișier: 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); } } } 
Testează-l acum

Ieșire:

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

Dimensiunea și capacitatea unui ArrayList

Dimensiunea și capacitatea unei liste de matrice sunt cei doi termeni pe care începătorii îi găsesc confuzi. Să-l înțelegem în această secțiune cu ajutorul unor exemple. Luați în considerare următorul fragment de cod.

Nume de fișier: 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()); } } 

Ieșire:

 The size of the array is: 0 

Explicaţie: Ieșirea are sens, deoarece nu am făcut nimic cu lista de matrice. Acum urmăriți următorul program.

Nume de fișier: 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()); } } 

Ieșire:

 The size of the array is: 0 

Explicaţie: Vedem că dimensiunea este încă 0, iar motivul din spatele acestui lucru este numărul 10 reprezintă capacitatea și dimensiunea. De fapt, dimensiunea reprezintă numărul total de elemente prezente în matrice. Deoarece nu am adăugat niciun element, dimensiunea listei de matrice este zero în ambele programe.

Capacitatea reprezintă numărul total de elemente pe care o poate conține lista de matrice. Prin urmare, capacitatea unei liste de matrice este întotdeauna mai mare sau egală cu dimensiunea listei de matrice. Când adăugăm un element în lista de matrice, acesta verifică dacă dimensiunea listei de matrice a devenit egală cu capacitatea sau nu. Dacă da, atunci capacitatea listei de matrice crește. Deci, în exemplul de mai sus, capacitatea va fi de 10 până când 10 elemente sunt adăugate la listă. Când adăugăm cele 11thelement, capacitatea crește. Rețineți că în ambele exemple, capacitatea listei de matrice este 10. În primul caz, capacitatea este 10, deoarece capacitatea implicită a listei de matrice este 10. În al doilea caz, am menționat în mod explicit că capacitatea matricei lista este 10.

Notă: Nu există nicio metodă standard pentru a spune cum crește capacitatea în lista de matrice. De fapt, modul în care crește capacitatea variază de la o versiune GDK la cealaltă versiune. Prin urmare, este necesar să se verifice modul în care codul de creștere a capacității este implementat în GDK. Nu există nicio metodă predefinită în clasa ArrayList care returnează capacitatea listei de matrice. Prin urmare, pentru o mai bună înțelegere, utilizați metoda capacității() a clasei Vector. Logica dimensiunii și capacității este aceeași în clasa ArrayList și în clasa Vector.

Subiecte asemănătoare

Cum să sortați ArrayList în Java

Diferența dintre Array și ArrayList

Când să utilizați ArrayList și LinkedList în Java

Diferența dintre ArrayList și LinkedList

Diferența dintre ArrayList și Vector

Cum se compară două ArrayList în Java

Cum să inversați ArrayList în Java

Când să utilizați ArrayList și LinkedList în Java

Cum să faci ArrayList doar pentru citire

Diferența dintre lungimea matricei și dimensiunea () a ArrayList în Java

Cum să sincronizezi ArrayList în Java

Cum se transformă ArrayList în Array și Array în ArrayList în java

Array vs ArrayList în Java

exemple de sisteme de operare

Cum să sortați Java ArrayList în ordine descrescătoare

Cum să eliminați duplicatele din ArrayList în Java