Java ArrayList forma part de Java marc de col·leccions i és una classe del paquet java.util. Ens proporciona matrius dinàmiques en Java. Tanmateix, pot ser més lent que les matrius estàndard, però pot ser útil en programes on es necessita molta manipulació a la matriu. Aquesta classe es troba a java.util paquet. El principal avantatge de ArrayList a Java és a dir, que si declarem una matriu, hem d'esmentar la mida, però a ArrayList, no cal esmentar la mida de ArrayList. Si voleu esmentar la mida, podeu fer-ho.
Taula de contingut
- Què és ArrayList a Java?
- Exemple de Java ArrayList
- Característiques importants de ArrayList a Java
- Constructors a ArrayList
- ArrayList en mètodes Java
- Operacions realitzades a ArrayList
- Complexitat de Java ArrayList
- Avantatges de Java ArrayList
- Desavantatges de Java ArrayList
- Conclusió
- Preguntes freqüents sobre ArrayList
Què és ArrayList a Java?
ArrayList és una classe Java implementada mitjançant la interfície List. Java ArrayList, com el seu nom indica, proporciona la funcionalitat d'una matriu dinàmica on la mida no es fixa com a matriu. A més, com a part del marc de col·leccions, té moltes funcions que no estan disponibles amb les matrius.

Il·lustració:
Comprovem la ArrayList amb el tipus d'objecte Integer emmagatzemat amb una imatge.

Exemple de Java ArrayList
Exemple 1: La següent implementació demostra com crear i utilitzar una ArrayList amb una menció de la seva mida.
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 = nova ArrayList (n); // Declarant la ArrayList ArrayList arr2 = nova ArrayList (); // Imprimint la ArrayList System.out.println('Matriu 1:' + arr1); System.out.println('Matriu 2:' + arr2); // Afegeix nous elements al // al final de la llista per a (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); } }> Sortida
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
Explicació del programa anterior:
ArrayList és una matriu dinàmica i no hem d'especificar la mida mentre la creem, la mida de la matriu augmenta automàticament quan afegim i eliminem elements dinàmicament. Tot i que la implementació real de la biblioteca pot ser més complexa, la següent és una idea molt bàsica que explica el funcionament de la matriu quan la matriu s'omple i si intentem afegir un element:
tipus de dades en java
- Crea una memòria de mida més gran a la memòria munt (per exemple, memòria de mida doble).
- Copia els elements de memòria actuals a la nova memòria.
- El nou element s'afegeix ara, ja que ara hi ha més memòria disponible.
- Esborra la memòria antiga.
Característiques importants de ArrayList a Java
- ArrayList hereta Llista abstracta classe i implementa el Interfície de llista .
- ArrayList s'inicialitza per mida. No obstant això, la mida augmenta automàticament si la col·lecció creix o es redueix si la col·lecció objectes s'eliminen de la col·lecció.
- Java ArrayList ens permet accedir a la llista aleatòriament.
- ArrayList no es pot utilitzar per classe d'embolcall per aquests casos.
- ArrayList a Java es pot veure com a vector en C++ .
- ArrayList no està sincronitzat. La seva classe sincronitzada equivalent a Java és Vector .
Entenem el Java ArrayList en profunditat . Mireu la imatge següent:

A la il·lustració anterior, Llista abstracta , CopyOnWriteArrayList , i AbstractSequentialList són les classes que implementen la interfície de llista. Una funcionalitat independent s'implementa en cadascuna de les classes esmentades. Ells són:
- Llista abstracta: Aquesta classe s'utilitza per implementar una llista no modificable, per a la qual només cal ampliar aquesta classe AbstractList i implementar només la aconseguir() i la mida () mètodes.
- CopyOnWriteArrayList: Aquesta classe implementa la interfície de llista. És una versió millorada de ArrayList en què totes les modificacions (afegir, establir, eliminar, etc.) s'implementen fent una còpia nova de la llista.
- ResumSequentialList: Aquesta classe implementa el Interfície de col·lecció i la classe AbstractCollection. Aquesta classe s'utilitza per implementar una llista no modificable, per a la qual només cal ampliar aquesta classe AbstractList i implementar només la aconseguir() i la mida () mètodes.
Constructors a ArrayList a Java
Per crear una ArrayList, hem de crear un objecte de la classe ArrayList. La classe ArrayList consta de diversos constructors que permeten la possible creació de la llista de matrius. Els constructors disponibles en aquesta classe són els següents:
1. ArrayList()
Aquest constructor s'utilitza per construir una llista de matrius buides. Si volem crear una ArrayList buida amb el nom arr , llavors, es pot crear com:
ArrayList arr = new ArrayList();>
2. ArrayList(Col·lecció c)
Aquest constructor s'utilitza per construir una llista de matrius inicialitzada amb els elements de la col·lecció c. Suposem que volem crear un ArrayList arr que contingui els elements presents a la col·lecció c, llavors, es pot crear com:
ArrayList arr = new ArrayList(c);>
3. ArrayList (capacitat int)
Aquest constructor s'utilitza per crear una llista de matrius amb la capacitat inicial especificada. Suposem que volem crear una ArrayList amb la mida inicial N, aleshores, es pot crear com:
ArrayList arr = new ArrayList(N);>
Mètodes Java ArrayList
| Mètode | Descripció |
|---|---|
| add (índex int, element Object) | Aquest mètode s'utilitza per inserir un element específic en un índex de posició específic en una llista. |
| afegir (Objecte o) | Aquest mètode s'utilitza per afegir un element específic al final d'una llista. |
| addAll(Col·lecció C) | Aquest mètode s'utilitza per afegir tots els elements d'una col·lecció específica al final de la llista esmentada, en tal ordre que els valors són retornats per l'iterador de la col·lecció especificada. |
| addAll(índex int, col·lecció C) | S'utilitza per inserir tots els elements que comencen a la posició especificada d'una col·lecció específica a la llista esmentada. |
| clar () | Aquest mètode s'utilitza per eliminar tots els elements de qualsevol llista. |
| clonar () | Aquest mètode s'utilitza per retornar una còpia superficial d'una ArrayList a Java. |
| conté? (Objecte o) | Retorna true si aquesta llista conté l'element especificat. |
| garantirCapacitat? (Capacitat mínima int) | Augmenta la capacitat d'aquesta instància ArrayList, si cal, per assegurar-se que pot contenir almenys el nombre d'elements especificat per l'argument de capacitat mínima. |
| per a cadascú? (acció del consumidor) | Realitza l'acció donada per a cada element de l'iterable fins que s'han processat tots els elements o l'acció genera una excepció. |
| obtenir? (índex int) | Retorna l'element a la posició especificada en aquesta llista. |
| indexOf (Objecte O) | L'índex de la primera ocurrència d'un element específic es retorna o -1 en cas que l'element no estigui a la llista. |
| està buit?() | Retorna true si aquesta llista no conté cap element. |
| lastIndexOf(Objecte O) | L'índex de l'última ocurrència d'un element específic es retorna o -1 en cas que l'element no estigui a la llista. |
| listIterator? () | Retorna un iterador de llista sobre els elements d'aquesta llista (en la seqüència adequada). |
| listIterator? (índex int) | Retorna un iterador de llista sobre els elements d'aquesta llista (en la seqüència adequada), començant a la posició especificada de la llista. |
| eliminar? (índex int) | Elimina l'element a la posició especificada en aquesta llista. |
| eliminar? (Objecte o) | Elimina la primera ocurrència de l'element especificat d'aquesta llista, si està present. |
| removeAll? (Col·lecció c) | Elimina d'aquesta llista tots els seus elements que estan continguts a la col·lecció especificada. |
| removeIf? (filtre de predicats) | Elimina tots els elements d'aquesta col·lecció que compleixen el predicat donat. |
| removeRange? (int fromIndex, int toIndex) | Elimina d'aquesta llista tots els elements l'índex dels quals està entre fromIndex, inclòs, i toIndex, exclusiu. |
| retainAll? (Col·lecció c) | Reté només els elements d'aquesta llista que es troben a la col·lecció especificada. |
| conjunt? (índex int, element E) | Substitueix l'element a la posició especificada en aquesta llista per l'element especificat. |
| mida? () | Retorna el nombre d'elements d'aquesta llista. |
| divisor? () | Crea un Spliterator d'enllaç tardà i ràpid sobre els elements d'aquesta llista. |
| subList? (int fromIndex, int toIndex) | Retorna una vista de la part d'aquesta llista entre el fromIndex, inclòs, especificat i el toIndex, exclusiu. |
| toArray() | Aquest mètode s'utilitza per retornar una matriu que conté tots els elements de la llista en l'ordre correcte. |
| toArray(Objecte[] O) | També s'utilitza per retornar una matriu que conté tots els elements d'aquesta llista en l'ordre correcte igual que el mètode anterior. |
| trimToSize() | Aquest mètode s'utilitza per retallar la capacitat de la instància de ArrayList a la mida actual de la llista. |
Nota: També podeu crear una ArrayList genèrica:
// Creació d'un nombre enter genèric ArrayList
ArrayList arrli = new ArrayList();
Alguns punts clau de ArrayList a Java
- ArrayList és una matriu redimensionable de l'estructura de dades subratllada o una matriu creixent.
- Es permeten els duplicats de ArrayList.
- Es conserva l'ordre d'inserció.
- Es permeten objectes heterogenis.
- És possible la inserció nul·la.
Vegem com realitzar algunes operacions bàsiques a ArrayList, tal com s'enumeren, de les quals parlarem més endavant juntament amb la implementació de cada operació.
- Afegeix un element a la llista/Afegeix un element
- Canvi d'elements/ Set element
- Eliminació d'elements/Eliminació d'elements
- Elements iterants
- obtenir elements
- afegir elements entre dos nombres
- Classificació d'elements
- Mida ArrayList
Operacions realitzades a ArrayList
1. Afegir Elements
Per afegir un element a una ArrayList, podem utilitzar el mètode add(). . Aquest mètode està sobrecarregat per realitzar múltiples operacions basades en diferents paràmetres. Són els següents:
- add(Object): Aquest mètode s'utilitza per afegir un element al final de la ArrayList.
- add(int index, Object): aquest mètode s'utilitza per afegir un element a un índex específic de la ArrayList.
A continuació es mostra la implementació de l'enfocament anterior:
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(); // Afegint elements a ArrayList // Entrades personalitzades al.add('Geeks'); al.add('Geeks'); // Aquí estem esmentant l'índex // al qual s'ha d'afegir al.add(1, 'For'); // Imprimint tots els elements d'un ArrayList System.out.println(al); } }>>>
Sortida [Geeks, For, Geeks]>
2. Elements canviants
Després d'afegir els elements, si volem canviar l'element, es pot fer amb el conjunt() mètode. Com que s'indexa una ArrayList, l'índex de l'element fa referència a l'element que volem canviar. Per tant, aquest mètode pren un índex i l'element actualitzat que cal inserir en aquest índex.
A continuació es mostra la implementació de l'enfocament anterior:
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(); // Afegeix elements a la llista de matrius // Elements d'entrada personalitzats al.add('Geeks'); al.add('Geeks'); // Afegint especificant l'índex a afegir al.add(1, 'Geeks'); // Impressió dels elements de la llista de matrius System.out.println('Lista de matrius inicial ' + al); // Element de configuració al primer índex al.set(1, 'Per'); // Imprimint la llista de matrius actualitzada System.out.println('Lista de matrius actualitzada ' + al); } }>>>
Sortida Per eliminar un element d'una ArrayList, podem utilitzar el mètode remove(). . Aquest mètode està sobrecarregat per realitzar múltiples operacions basades en diferents paràmetres. Són els següents:
- eliminar (Objecte): Aquest mètode s'utilitza per eliminar simplement un objecte de la ArrayList. Si hi ha diversos objectes d'aquest tipus, s'elimina la primera ocurrència de l'objecte.
- eliminar (índex int): Com que una ArrayList està indexada, aquest mètode pren un valor enter que simplement elimina l'element present en aquest índex específic a ArrayList. Després d'eliminar l'element, tots els elements es mouen cap a l'esquerra per omplir l'espai i s'actualitzen els índexs dels objectes.
Exemple:
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(); // Afegint elements a ArrayList // Addició personalitzada al.add('Geeks'); al.add('Geeks'); // Afegeix un element a l'índex específic al.add(1, 'Per'); // Imprimint tots els elements de ArrayList System.out.println('Initial ArrayList' + al); // Eliminant l'element de dalt ArrayList al.remove(1); // Impressió dels elements de la llista de matrius actualitzats System.out.println('Després de l'eliminació de l'índex' + al); // Eliminant aquest element de paraula a ArrayList al.remove('Geeks'); // Ara imprimint ArrayList actualitzat System.out.println('Després de l'eliminació d'objectes' + al); } }>>>
Sortida Hi ha diverses maneres d'iterar a través de la ArrayList. Les maneres més famoses són utilitzant el bàsic per bucle en combinació amb a mètode get(). per obtenir l'element en un índex específic i el avançat per un bucle . Exemple
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(); // Afegint elements a ArrayList // utilitzant el mètode estàndard add() al.add('Geeks'); al.add('Geeks'); al.add(1, 'Per'); // Utilitzant el mètode Get i el // bucle for 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 + ' '); } }>
Sortida // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList llista = new ArrayList(); // afegeix la llista de números.add(9); llista.afegir(5); llista.afegir(6); System.out.println(llista); // obtenir mètode Integer n= list.get(1); System.out.println('al número d'índex 1 és:'+n); } }>>>
Sortida // 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 llista = new ArrayList(); llista.afegir(1); llista.afegir(2); llista.afegir(4); System.out.println(llista); // inserir l'element 3 que falta list.add(2, 3); System.out.println(llista); } }>>>
Sortida // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList llista = new ArrayList(); llista.afegir(2); llista.add(4); llista.afegir(3); llista.afegir(1); System.out.println('Abans d'ordenar la llista:'); System.out.println(llista); Col·leccions.sort(llista); System.out.println('després d'ordenar la llista:'); System.out.println(llista); } }>>>
Sortida // 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 llista = new ArrayList(); llista.afegir(1); llista.afegir(2); llista.afegir(3); llista.afegir(4); int b = llista.mida(); System.out.println('La mida és:' + b); } }>>>
Sortida Complexitat de Java ArrayListFuncionament
Complexitat temporal
Complexitat espacial
Inserint un element a ArrayList
llenguatge pròleg
O(1)
O(N)
Eliminació de l'element de ArrayList
O(N)
O(1)
Travessant elements a ArrayList
O(N)
O(N)
Substitució d'elements a ArrayList
missió impossible totes les pel·lícules
O(1)
O(1)
ArrayList a Java és una classe del marc Java Collections que implementa la interfície List. Aquests són els avantatges i els desavantatges d'utilitzar ArrayList a Java.
Avantatges de Java ArrayList
- Mida dinàmica: ArrayList pot créixer i reduir-se de forma dinàmica, de manera que és fàcil afegir o eliminar elements segons sigui necessari.
- Fàcil d'utilitzar: ArrayList és senzill d'utilitzar, per la qual cosa és una opció popular per a molts desenvolupadors de Java.
- Accés ràpid: ArrayList proporciona un accés ràpid als elements, ja que s'implementa com una matriu sota el capó.
- Col·lecció ordenada: ArrayList conserva l'ordre dels elements, la qual cosa us permet accedir als elements en l'ordre en què s'han afegit.
- Admet valors nuls: ArrayList pot emmagatzemar valors nuls, el que és útil en els casos en què cal representar l'absència d'un valor.
Desavantatges de Java ArrayList
- Més lent que les matrius: ArrayList és més lenta que les matrius per a determinades operacions, com ara inserir elements al mig de la llista.
- Augment de l'ús de memòria: ArrayList requereix més memòria que les matrius, ja que necessita mantenir la seva mida dinàmica i gestionar el canvi de mida.
- No és segur per a fils: ArrayList no és segur per a fils, el que significa que diversos fils poden accedir a la llista i modificar-la simultàniament, provocant possibles condicions de carrera i corrupció de dades.
- Degradació del rendiment: el rendiment d'ArrayList pot degradar-se a mesura que augmenta el nombre d'elements de la llista, especialment per a operacions com la cerca d'elements o la inserció d'elements al centre de la llista.
Conclusió
Els punts que cal recordar d'aquest article s'esmenten a continuació:
- ArrayList és la part del marc de col·leccions. Hereta la classe AbstractList i implementa la interfície List.
- ArrayList és la implementació d'una matriu dinàmica.
- ArrayList es pot inicialitzar utilitzant diferents tipus de constructors, com ara sense paràmetres, passant la col·lecció com a paràmetre i passant un enter com a paràmetre.
- Les operacions es poden realitzar a ArrayList de la següent manera Afegint, eliminant, iterant i ordenant.
Preguntes freqüents sobre ArrayList
Què és una ArrayList a Java?
ArrayList en Java és una part del marc de col·leccions. S'utilitza per emmagatzemar elements i la mida és redimensionable.
Com s'emmagatzemen les dades a ArrayList?
ArrayList pot emmagatzemar dades fins que la mida d'ArrayList estigui plena, després d'això, la mida de ArrayList es duplica si volem emmagatzemar més elements.
ArrayList permet duplicats?
Sí, ArrayList permet emmagatzemar valors duplicats.