Java ArrayList ir daļa no Java kolekciju ietvars un tā ir java.util pakotnes klase. Tas nodrošina mums dinamiskus masīvus Java. Tomēr tas var būt lēnāks nekā standarta masīvi, taču tas var būt noderīgs programmās, kurās ir nepieciešams daudz manipulēt ar masīvu. Šī klase ir atrodama java.util iepakojums. Galvenais Java ArrayList priekšrocības ir tas, ka, ja mēs deklarējam masīvu, mums ir jāmin izmērs, bet ArrayList nav nepieciešams pieminēt ArrayList lielumu. Ja vēlaties minēt izmēru, varat to izdarīt.
Satura rādītājs
- Kas ir ArrayList Java?
- Java ArrayList piemērs
- Svarīgas ArrayList funkcijas Java
- Konstruktori programmā ArrayList
- ArrayList Java metodēs
- ArrayList veiktās darbības
- Java ArrayList sarežģītība
- Java ArrayList priekšrocības
- Java ArrayList trūkumi
- Secinājums
- ArrayList bieži uzdotie jautājumi
Kas ir ArrayList Java?
ArrayList ir Java klase, kas ieviesta, izmantojot List interfeisu. Java ArrayList, kā norāda nosaukums, nodrošina dinamiska masīva funkcionalitāti, ja izmērs nav fiksēts kā masīvs. Kā daļa no kolekciju sistēmas tai ir arī daudzas funkcijas, kas nav pieejamas ar masīviem.

Ilustrācija:
Ļaujiet mums pārbaudīt ArrayList ar Integer Objekta tipu Saglabāts tajā ar attēlu.

Java ArrayList piemērs
1. piemērs: Tālāk ir parādīts, kā izveidot un izmantot ArrayList, norādot tā lielumu.
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 = jauns ArrayList (n); // ArrayList deklarēšana ArrayList arr2 = jauns ArrayList (); // ArrayList drukāšana System.out.println('Array 1:' + arr1); System.out.println('Masīvs 2:' + arr2); // Jaunu elementu pievienošana // saraksta beigās (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); } }> Izvade
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
Iepriekš minētās programmas skaidrojums:
ArrayList ir dinamisks masīvs, un mums nav jānorāda izmērs, veidojot to, masīva lielums automātiski palielinās, kad mēs dinamiski pievienojam un noņemam vienumus. Lai gan faktiskā bibliotēkas ieviešana var būt sarežģītāka, tālāk ir sniegta ļoti vienkārša ideja, kas izskaidro masīva darbību, kad masīvs kļūst pilns un ja mēs cenšamies pievienot vienumu:
virknes java masīvs
- Izveido lielāka izmēra atmiņu kaudzes atmiņā (piemēram, dubultā izmēra atmiņu).
- Kopē pašreizējos atmiņas elementus jaunajā atmiņā.
- Jaunais vienums ir pievienots tagad, jo tagad ir pieejama lielāka atmiņa.
- Izdzēsiet veco atmiņu.
Svarīgas ArrayList funkcijas Java
- ArrayList manto AbstractList klasē un īsteno Saraksta interfeiss .
- ArrayList tiek inicializēts pēc izmēra. Tomēr izmērs tiek automātiski palielināts, ja kolekcija palielinās vai samazinās, ja objektus tiek izņemti no kolekcijas.
- Java ArrayList ļauj mums nejauši piekļūt sarakstam.
- ArrayList nevar izmantot iesaiņojuma klase šādiem gadījumiem.
- Java ArrayList var uzskatīt par a vektors C++ valodā .
- ArrayList nav sinhronizēts. Tā ekvivalentā sinhronizētā klase Java ir Vektors .
Sapratīsim Java ArrayList padziļināti . Apskatiet zemāk redzamo attēlu:

Iepriekš redzamajā ilustrācijā AbstractList , CopyOnWriteArrayList , un AbstractSequentialList ir klases, kas ievieš saraksta saskarni. Katrā no minētajām klasēm tiek realizēta atsevišķa funkcionalitāte. Viņi ir:
- AbstractList: Šī klase tiek izmantota, lai ieviestu nemodificētu sarakstu, kuram ir jāpaplašina tikai šī AbstractList klase un jāievieš tikai gūt() un Izmērs() metodes.
- CopyOnWriteArrayList: Šī klase ievieš saraksta saskarni. Tā ir uzlabota versija ArrayList kurā visas modifikācijas (pievienot, iestatīt, noņemt utt.) tiek ieviestas, izveidojot jaunu saraksta kopiju.
- AbstractSequentialList: Šī klase īsteno Kolekcijas saskarne un AbstractCollection klase. Šī klase tiek izmantota, lai ieviestu nemodificētu sarakstu, kuram ir jāpaplašina tikai šī AbstractList klase un jāievieš tikai gūt() un Izmērs() metodes.
Konstruktori programmā ArrayList Java
Lai izveidotu ArrayList, mums ir jāizveido ArrayList klases objekts. ArrayList klase sastāv no dažādām konstruktori kas ļauj izveidot iespējamu masīvu sarakstu. Šajā klasē ir pieejami šādi konstruktori:
1. ArrayList()
Šis konstruktors tiek izmantots, lai izveidotu tukšu masīvu sarakstu. Ja mēs vēlamies izveidot tukšu ArrayList ar nosaukumu arr , tad to var izveidot šādi:
ArrayList arr = new ArrayList();>
2. ArrayList (kolekcija c)
Šis konstruktors tiek izmantots, lai izveidotu masīvu sarakstu, kas inicializēts ar elementiem no kolekcijas c. Pieņemsim, ka mēs vēlamies izveidot ArrayList arr, kas satur kolekcijā c esošos elementus, tad to var izveidot šādi:
ArrayList arr = new ArrayList(c);>
3. ArrayList(int jauda)
Šis konstruktors tiek izmantots, lai izveidotu masīvu sarakstu ar norādīto sākotnējo jaudu. Pieņemsim, ka mēs vēlamies izveidot ArrayList ar sākotnējo izmēru N, tad to var izveidot šādi:
ArrayList arr = new ArrayList(N);>
Java ArrayList metodes
| Metode | Apraksts |
|---|---|
| add(int indekss, objekta elements) | Šo metodi izmanto, lai sarakstā ievietotu noteiktu elementu noteiktā pozīcijas indeksā. |
| pievienot (Objekts o) | Šo metodi izmanto, lai saraksta beigās pievienotu konkrētu elementu. |
| pievienot visu (C kolekcija) | Šo metodi izmanto, lai minētā saraksta beigās pievienotu visus elementus no konkrētas kolekcijas tādā secībā, ka vērtības tiek atgrieztas noteiktās kolekcijas iteratorā. |
| pievienot visu (indekss, kolekcija C) | Izmanto, lai minētajā sarakstā ievietotu visus elementus, sākot no norādītās pozīcijas no noteiktas kolekcijas. |
| skaidrs () | Šo metodi izmanto, lai noņemtu visus elementus no jebkura saraksta. |
| klons () | Šo metodi izmanto, lai atgrieztu seklu ArrayList kopiju Java. |
| satur? (Objekts o) | Atgriež vērtību true, ja šajā sarakstā ir norādīts elements. |
| nodrošinātCapacity? (int minCapacity) | Ja nepieciešams, palielina šīs ArrayList instances ietilpību, lai nodrošinātu, ka tajā var būt vismaz minimālās jaudas argumentā norādītais elementu skaits. |
| par katru? (Patērētāja rīcība) | Veic norādīto darbību katram iterable elementam, līdz visi elementi ir apstrādāti vai darbība rada izņēmumu. |
| iegūt? (indekss) | Atgriež elementu norādītajā pozīcijā šajā sarakstā. |
| indexOf (Object O) | Indekss, kas pirmo reizi parādās konkrētam elementam, tiek atgriezts vai -1, ja elements nav sarakstā. |
| ir tukšs?() | Atgriež vērtību true, ja šajā sarakstā nav elementu. |
| pēdējais indekss(Objekts) | Konkrēta elementa pēdējās parādīšanās indekss tiek atgriezts vai -1, ja elements nav sarakstā. |
| listiterators?() | Atgriež saraksta iteratoru virs šī saraksta elementiem (pareizā secībā). |
| listIterator?(int index) | Atgriež saraksta iteratoru virs šī saraksta elementiem (pareizā secībā), sākot no norādītās pozīcijas sarakstā. |
| noņemt? (int index) | Noņem elementu norādītajā vietā šajā sarakstā. |
| noņemt? (Objekts o) | Noņem no šī saraksta norādītā elementa pirmo reizi, ja tāds ir. |
| noņemt visu? (C kolekcija) | No šī saraksta tiek noņemti visi tā elementi, kas atrodas norādītajā kolekcijā. |
| RemoveIf? (Predikātu filtrs) | Noņem visus šīs kolekcijas elementus, kas atbilst norādītajam predikātam. |
| RemoveRange?(int fromIndex, int toIndex) | No šī saraksta tiek noņemti visi elementi, kuru indekss ir starp fromIndex, ieskaitot un toIndex, ekskluzīvs. |
| paturēt visu? (C kolekcija) | Saglabā tikai tos šī saraksta elementus, kas ir ietverti norādītajā kolekcijā. |
| komplekts? (indekss, E elements) | Aizstāj elementu norādītajā vietā šajā sarakstā ar norādīto elementu. |
| Izmērs?() | Atgriež elementu skaitu šajā sarakstā. |
| sadalītājs? () | Šī saraksta elementiem izveido vēlu saistošu un ātru atteices sadalītāju. |
| apakšsaraksts?(int fromIndex, int toIndex) | Atgriež skatu uz šī saraksta daļu starp norādīto fromIndex, ieskaitot un toIndex, izslēdzot. |
| toArray() | Šo metodi izmanto, lai atgrieztu masīvu, kurā ir visi saraksta elementi pareizā secībā. |
| toMasīvs (Object[] O) | To izmanto arī, lai atgrieztu masīvu, kurā ir visi šī saraksta elementi pareizā secībā, tāpat kā iepriekšējā metodē. |
| apgriezt izmēru() | Šo metodi izmanto, lai samazinātu ArrayList instances jaudu līdz saraksta pašreizējam izmēram. |
Piezīme: Varat arī izveidot vispārīgu ArrayList:
// Vispārīga vesela skaitļa ArrayList izveide
ArrayList arrli = jauns ArrayList();
Daži Java ArrayList galvenie punkti
- ArrayList ir pasvītrota datu struktūra, maināma izmēra masīvs vai paplašināms masīvs.
- Ir atļauti ArrayList dublikāti.
- Ievietošanas pasūtījums tiek saglabāts.
- Ir atļauti neviendabīgi objekti.
- Ir iespējama nulles ievietošana.
Apskatīsim, kā veikt dažas pamatoperācijas ArrayList sarakstā, kuras mēs apspriedīsim tālāk, ieviešot katru darbību.
- Elementa pievienošana sarakstam/ Pievienot elementu
- Elementu maiņa/ Iestatīt elementu
- Notiek elementu noņemšana/Dzēst elementu
- Atkārtoti elementi
- iegūt elementus
- pievienojiet elementus starp diviem cipariem
- Elementu šķirošana
- ArrayList lielums
ArrayList veiktās darbības
1. Elementu pievienošana
Lai pievienotu elementu ArrayList, mēs varam izmantot add() metode . Šī metode ir pārslogota, lai veiktu vairākas darbības, pamatojoties uz dažādiem parametriem. Tie ir šādi:
- add(Object): šo metodi izmanto, lai pievienotu elementu ArrayList beigās.
- add(int index, Object): šo metodi izmanto, lai pievienotu elementu noteiktam ArrayList indeksam.
Tālāk ir aprakstīta iepriekš minētās pieejas īstenošana.
python programmasJava
// 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 = jauns ArrayList(); // Elementu pievienošana ArrayList // Pielāgotas ievades al.add('Geeks'); al.add('Geeks'); // Šeit mēs pieminam indeksu //, kuram tas jāpievieno al.add(1, 'For'); // Visu elementu drukāšana ArrayList System.out.println(al); } }> Izvade
[Geeks, For, Geeks]>
2. Elementu maiņa
Pēc elementu pievienošanas, ja vēlamies elementu mainīt, to var izdarīt, izmantojot set() metodi. Tā kā ArrayList ir indeksēts, uz elementu, kuru vēlamies mainīt, atsaucas ar elementa indeksu. Tāpēc šī metode izmanto indeksu un atjaunināto elementu, kas jāievieto šajā indeksā.
Tālāk ir aprakstīta iepriekš minētās pieejas īstenošana.
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 = jauns ArrayList(); // Elementu pievienošana Arraylist // Pielāgoti ievades elementi al.add('Geeks'); al.add('Geeks'); // Pievienošana, norādot pievienojamo indeksu al.add(1, 'Geeks'); // Arraylist elementu drukāšana System.out.println('Initial ArrayList ' + al); // Iestatīšanas elements 1. indeksā al.set(1, 'For'); // Atjauninātā Arraylist drukāšana System.out.println('Updated ArrayList ' + al); } }> Izvade
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
3. Elementu noņemšana
Lai noņemtu elementu no ArrayList, mēs varam izmantot Remove() metode . Šī metode ir pārslogota, lai veiktu vairākas darbības, pamatojoties uz dažādiem parametriem. Tie ir šādi:
- noņemt (objekts): Šo metodi izmanto, lai vienkārši noņemtu objektu no ArrayList. Ja ir vairāki šādi objekti, tad pirmais objekta gadījums tiek noņemts.
- noņemt(int indekss): Tā kā ArrayList ir indeksēts, šī metode ņem vesela skaitļa vērtību, kas vienkārši noņem elementu, kas atrodas šajā konkrētajā ArrayList indeksā. Pēc elementa noņemšanas visi elementi tiek pārvietoti pa kreisi, lai aizpildītu vietu, un objektu indeksi tiek atjaunināti.
Piemērs:
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 = jauns ArrayList(); // Elementu pievienošana ArrayList // Pielāgota pievienošana al.add('Geeks'); al.add('Geeks'); // Elementa pievienošana noteiktam indeksam al.add(1, 'For'); // Visu ArrayList elementu drukāšana System.out.println('Initial ArrayList ' + al); // Elementa noņemšana no augšas ArrayList al.remove(1); // Atjaunināto Arraylist elementu drukāšana System.out.println('After the Index Removal ' + al); // Šī vārda elementa noņemšana no ArrayList al.remove('Geeks'); // Tagad tiek drukāts atjaunināts ArrayList System.out.println('Pēc objekta noņemšanas ' + al); } }> Izvade
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
4. ArrayList atkārtošana
Ir vairāki veidi, kā atkārtot ArrayList. Slavenākie veidi ir pamata izmantošana cilpai kombinācijā ar a get() metode lai iegūtu elementu noteiktā indeksā un uzlabots par cilpu .
Piemērs
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 = jauns ArrayList(); // Elementu pievienošana ArrayList // izmantojot standarta add() metodi al.add('Geeks'); al.add('Geeks'); al.add(1, 'Par'); // Izmantojot metodi Get un // 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 + ' '); } }> Izvade
Geeks For Geeks Geeks For Geeks>
5. Iegūstiet elementus
Java // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList saraksts = jauns ArrayList(); // pievienot numuru sarakstu.add(9); list.add(5); list.add(6); System.out.println(saraksts); // iegūt metodi Vesels skaitlis n= list.get(1); System.out.println('at indext 1 numurs ir:'+n); } }> Izvade
[9, 5, 6] at indext 1 number is:5>
6. Pievienojiet elementus starp diviem cipariem
Java // 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 saraksts = jauns ArrayList(); list.add(1); list.add(2); list.add(4); System.out.println(saraksts); // ievietot trūkstošo elementu 3 list.add(2, 3); System.out.println(saraksts); } }> Izvade
[1, 2, 4] [1, 2, 3, 4]>
7. ArrayList Kārtot
Java // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList saraksts = jauns ArrayList(); list.add(2); list.add(4); list.add(3); list.add(1); System.out.println('Pirms saraksta kārtošanas:'); System.out.println(saraksts); Collections.sort(saraksts); System.out.println('pēc saraksta kārtošanas:'); System.out.println(saraksts); } }> Izvade
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>
8. Elementu izmērs
Java // 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 saraksts = jauns ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int b = list.size(); System.out.println('Izmērs ir :' + b); } }> Izvade
The size is :4>
Java ArrayList sarežģītība
Darbība | Laika sarežģītība | Kosmosa sarežģītība |
|---|---|---|
Elementa ievietošana programmā ArrayList | O(1) | O(N) |
Elementa noņemšana no ArrayList | O(N) 'masona formula' | O(1) |
Elementu šķērsošana programmā ArrayList | O(N) | O(N) |
Elementu aizstāšana programmā ArrayList | O(1) | O(1) |
Java ArrayList ir klase Java kolekciju sistēmā, kas ievieš List interfeisu. Šeit ir norādītas priekšrocības un trūkumi, izmantojot Java ArrayList.
Java ArrayList priekšrocības
- Dinamiskais izmērs: ArrayList var dinamiski augt un samazināties, padarot to viegli pievienot vai noņemt elementus pēc vajadzības.
- Viegli lietojams: ArrayList ir vienkārši lietojams, padarot to par populāru izvēli daudziem Java izstrādātājiem.
- Ātra piekļuve: ArrayList nodrošina ātru piekļuvi elementiem, jo tas ir ieviests kā masīvs zem pārsega.
- Sakārtota kolekcija: ArrayList saglabā elementu secību, ļaujot piekļūt elementiem to pievienošanas secībā.
- Atbalsta nulles vērtības: ArrayList var saglabāt nulles vērtības, padarot to noderīgu gadījumos, kad ir jāatspoguļo vērtības trūkums.
Java ArrayList trūkumi
- Lēnāk nekā masīvi: ArrayList ir lēnāks par masīviem noteiktām darbībām, piemēram, elementu ievietošanai saraksta vidū.
- Palielināts atmiņas lietojums: ArrayList ir nepieciešams vairāk atmiņas nekā masīviem, jo tam ir jāsaglabā tā dinamiskais izmērs un jārīkojas ar izmēru maiņu.
- Nav pavedienu drošs: ArrayList nav pavedienu drošs, kas nozīmē, ka vairāki pavedieni var piekļūt sarakstam un to mainīt vienlaikus, izraisot iespējamus sacensību apstākļus un datu bojājumus.
- Veiktspējas pasliktināšanās: ArrayList veiktspēja var pasliktināties, palielinoties elementu skaitam sarakstā, īpaši tādām darbībām kā elementu meklēšana vai elementu ievietošana saraksta vidū.
Secinājums
Tālāk ir minēti punkti, kas jāatceras no šī raksta:
- ArrayList ir kolekcijas sistēmas daļa. Tas pārmanto AbstractList klasi un ievieš List interfeisu.
- ArrayList ir dinamiska masīva ieviešana.
- ArrayList var inicializēt, izmantojot dažādus konstruktoru tipus, piemēram, bez parametriem, nododot kolekciju kā parametru un nododot veselu skaitli kā parametru.
- ArrayList darbības var veikt šādi: pievienošana, noņemšana, atkārtošana un kārtošana.
ArrayList bieži uzdotie jautājumi
Kas ir ArrayList Java?
Java ArrayList ir daļa no kolekciju sistēmas. To izmanto elementu uzglabāšanai, un izmēru var mainīt.
Kā dati tiek glabāti ArrayList?
ArrayList var glabāt datus, līdz ArrayList izmērs ir pilns, pēc tam ArrayList izmērs tiek dubultots, ja vēlamies saglabāt vēl kādus elementus.
Vai ArrayList pieļauj dublikātus?
Jā, ArrayList ļauj saglabāt vērtību dublikātus.