logo

ArrayList v Javi

Java ArrayList je del Jave okvir zbirk in je razred paketa java.util. Zagotavlja nam dinamična polja v Javi. Čeprav je morda počasnejši od standardnih nizov, je lahko koristen v programih, kjer je potrebnih veliko manipulacij z nizom. Ta razred najdemo v java.util paket. Glavni prednost ArrayList v Javi je, da moramo, če deklariramo matriko, omeniti velikost, vendar v ArrayList ni treba omeniti velikosti ArrayList. Če želite omeniti velikost, lahko to storite.

Kazalo



Kaj je ArrayList v Javi?

ArrayList je razred Java, implementiran z vmesnikom List. Java ArrayList, kot že ime pove, zagotavlja funkcionalnost dinamične matrike, kjer velikost ni fiksna kot matrika. Poleg tega ima kot del ogrodja zbirk številne funkcije, ki niso na voljo pri nizih.

ArrayList_Java

Ilustracija:

Preverimo ArrayList s tipom Integer Object, ki je v njem shranjen s sliko.



ArrayList_Integer_Object

Primer Java ArrayList

Primer 1: Naslednja izvedba prikazuje, kako ustvariti in uporabiti ArrayList z omembo njegove velikosti.

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 = nov ArrayList (n);  // Deklaracija seznama ArrayList ArrayList arr2 = nov ArrayList ();  // Tiskanje seznama ArrayList System.out.println('Array 1:' + arr1);  System.out.println('Matrika 2:' + arr2);  // Dodajanje novih elementov // na konec seznama za (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);  } }>

Izhod
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>

Razlaga zgornjega programa:

ArrayList je dinamična matrika in med ustvarjanjem nam ni treba določiti velikosti, velikost matrike se samodejno poveča, ko dinamično dodajamo in odstranjujemo elemente. Čeprav je dejanska izvedba knjižnice lahko bolj zapletena, je naslednja zelo osnovna ideja, ki pojasnjuje delovanje polja, ko se polje napolni in če poskušamo dodati element:



pretvori nfa v dfa
  • Ustvari pomnilnik večje velikosti v pomnilniku kopice (na primer pomnilnik dvojne velikosti).
  • Kopira trenutne pomnilniške elemente v nov pomnilnik.
  • Nov element je dodan zdaj, saj je zdaj na voljo več pomnilnika.
  • Izbrišite stari pomnilnik.

Pomembne funkcije ArrayList v Javi

  • ArrayList podeduje AbstractList razreda in izvaja Seznam vmesnika .
  • ArrayList se inicializira glede na velikost. Vendar se velikost samodejno poveča, če zbirka raste, ali skrči, če predmetov se odstranijo iz zbirke.
  • Java ArrayList nam omogoča naključen dostop do seznama.
  • ArrayList ni mogoče uporabiti za ovojni razred za take primere.
  • ArrayList v Javi je mogoče videti kot a vektor v C++ .
  • ArrayList ni sinhroniziran. Njegov enakovredni sinhronizirani razred v Javi je Vektor .

Razumejmo, Java ArrayList v globino . Poglejte spodnjo sliko:

List_Classes_Interface

Na zgornji ilustraciji je AbstractList , CopyOnWriteArrayList , in AbstractSequentialList so razredi, ki izvajajo vmesnik seznama. V vsakem od omenjenih razredov je implementirana posebna funkcionalnost. To so:

  1. AbstractList: Ta razred se uporablja za implementacijo nespremenljivega seznama, za katerega je treba samo razširiti ta razred AbstractList in implementirati samo dobiti () in velikost () metode.
  2. CopyOnWriteArrayList: Ta razred izvaja vmesnik seznama. Je izboljšana različica ArrayList v katerem so vse spremembe (dodaj, nastavi, odstrani itd.) izvedene z izdelavo nove kopije seznama.
  3. AbstractSequentialList: Ta razred izvaja Zbirni vmesnik in razred AbstractCollection. Ta razred se uporablja za implementacijo nespremenljivega seznama, za katerega je treba samo razširiti ta razred AbstractList in implementirati samo dobiti () in velikost () metode.

Konstruktorji v ArrayList v Javi

Če želimo ustvariti ArrayList, moramo ustvariti objekt razreda ArrayList. Razred ArrayList je sestavljen iz različnih konstruktorji ki omogočajo možno ustvarjanje matričnega seznama. V tem razredu so na voljo naslednji konstruktorji:

1. ArrayList()

Ta konstruktor se uporablja za izdelavo praznega matričnega seznama. Če želimo ustvariti prazen ArrayList z imenom prir , potem ga je mogoče ustvariti kot:

ArrayList arr = new ArrayList();>

2. ArrayList (Zbirka c)

Ta konstruktor se uporablja za izdelavo matričnega seznama, inicializiranega z elementi iz zbirke c. Recimo, da želimo ustvariti ArrayList arr, ki vsebuje elemente, prisotne v zbirki c, potem ga je mogoče ustvariti kot:

ArrayList arr = new ArrayList(c);>

3. ArrayList (int zmogljivost)

Ta konstruktor se uporablja za izdelavo matričnega seznama s podano začetno zmogljivostjo. Recimo, da želimo ustvariti ArrayList z začetno velikostjo N, potem ga lahko ustvarimo kot:

ArrayList arr = new ArrayList(N);>

Metode Java ArrayList

MetodaOpis
add(int indeks, element predmeta) Ta metoda se uporablja za vstavljanje določenega elementa na določen indeks položaja na seznamu.
dodaj (predmet o) Ta metoda se uporablja za dodajanje določenega elementa na konec seznama.
dodaj vse (zbirka C) Ta metoda se uporablja za dodajanje vseh elementov iz določene zbirke na konec omenjenega seznama v takem vrstnem redu, da vrednosti vrne iterator navedene zbirke.
addAll(indeks, zbirka C) Uporablja se za vstavljanje vseh elementov, ki se začnejo na določenem mestu iz določene zbirke na omenjeni seznam.
počisti() Ta metoda se uporablja za odstranitev vseh elementov s katerega koli seznama.
klon() Ta metoda se uporablja za vrnitev plitke kopije seznama ArrayList v Javi.
vsebuje? (Predmet o) Vrne true, če ta seznam vsebuje navedeni element.
secureCapacity?(int minCapacity) Po potrebi poveča zmogljivost tega primerka ArrayList, da zagotovi, da lahko vsebuje vsaj toliko elementov, ki jih določa argument minimalne zmogljivosti.
forEach? (ukrep potrošnika) Izvede dano dejanje za vsak element Iterable, dokler niso vsi elementi obdelani ali dejanje vrže izjemo.
dobiti? (indeks) Vrne element na podanem mestu na tem seznamu.
indexOf(predmet O) Indeks prve pojavitve določenega elementa je vrnjen ali -1, če elementa ni na seznamu.
je prazno?() Vrne true, če ta seznam ne vsebuje elementov.
lastIndexOf(predmet O) Indeks zadnje pojavitve določenega elementa je vrnjen ali -1, če elementa ni na seznamu.
listIterator?() Vrne iterator seznama nad elementi na tem seznamu (v pravilnem zaporedju).
listIterator?(int indeks) Vrne iterator seznama nad elementi na tem seznamu (v pravilnem zaporedju), začenši na podanem mestu na seznamu.
odstraniti? (indeks) Odstrani element na podanem mestu na tem seznamu.
Odstrani? (Predmet o) Odstrani prvo pojavitev podanega elementa s tega seznama, če je prisoten.
removeAll? (Zbirka c) S tega seznama odstrani vse njegove elemente, ki so vsebovani v navedeni zbirki.
removeIf? (Predikatni filter) Odstrani vse elemente te zbirke, ki izpolnjujejo dani predikat.
removeRange?(int fromIndex, int toIndex) S tega seznama odstrani vse elemente, katerih indeks je med fromIndex, vključno, in toIndex, izključno.
retainAll? (Zbirka c) Ohrani samo elemente na tem seznamu, ki so vsebovani v navedeni zbirki.
set?(int indeks, E element) Zamenja element na podanem mestu na tem seznamu s podanim elementom.
velikost?() Vrne število elementov na tem seznamu.
spliterator?() Ustvari pozno vezavo in hiter razdelilnik nad elementi na tem seznamu.
podseznam? (int fromIndex, int toIndex) Vrne pogled dela tega seznama med navedenim fromIndex, vključno, in toIndex, izključno.
toArray() Ta metoda se uporablja za vrnitev matrike, ki vsebuje vse elemente na seznamu v pravilnem vrstnem redu.
toArray(Object[] O) Uporablja se tudi za vrnitev matrike, ki vsebuje vse elemente na tem seznamu v pravilnem vrstnem redu, enako kot prejšnja metoda.
trimToSize() Ta metoda se uporablja za zmanjšanje zmogljivosti primerka ArrayList na trenutno velikost seznama.

Opomba: Ustvarite lahko tudi generični ArrayList:

// Ustvarjanje generičnega celega ArrayList
ArrayList arrli = nov ArrayList();

Nekaj ​​ključnih točk ArrayList v Javi

  1. ArrayList je podčrtana podatkovna struktura Spremenljiva matrika ali Growable Array.
  2. Dovoljeni so dvojniki ArrayList.
  3. Vrstni red za vstavljanje je ohranjen.
  4. Dovoljeni so heterogeni predmeti.
  5. Ničelna vstavitev je možna.

Poglejmo, kako izvesti nekaj osnovnih operacij na seznamu ArrayList, kot je navedeno, o čemer bomo nadalje razpravljali skupaj z izvajanjem vsake operacije.

  • Dodajanje elementa na seznam/Dodaj element
  • Spreminjanje elementov/ Set element
  • Odstranjevanje elementov/Brisanje elementa
  • Ponavljajoči se elementi
  • dobiti elemente
  • dodajte elemente med dve številki
  • Razvrščanje elementov
  • Velikost ArrayList

Operacije, izvedene v ArrayList

1. Dodajanje elementov

Da bi dodali element na ArrayList, lahko uporabimo metoda add(). . Ta metoda je preobremenjena za izvajanje več operacij na podlagi različnih parametrov. So naslednji:

  • add(Object): Ta metoda se uporablja za dodajanje elementa na konec seznama ArrayList.
  • add(int index, Object): Ta metoda se uporablja za dodajanje elementa na določen indeks v ArrayList.

Spodaj je izvedba zgornjega pristopa:

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 = nov ArrayList();  // Dodajanje elementov v ArrayList // Vnosi po meri al.add('Geeks');  al.add('Geeks');  // Tukaj omenjamo indeks // pri katerem naj bo dodana al.add(1, 'Za');  // Tiskanje vseh elementov v ArrayList System.out.println(al);  } }>

Izhod
[Geeks, For, Geeks]>

2. Spreminjanje elementov

Po dodajanju elementov, če želimo element spremeniti, lahko to storimo z uporabo set() metoda. Ker je ArrayList indeksiran, se na element, ki ga želimo spremeniti, sklicuje indeks elementa. Zato ta metoda vzame indeks in posodobljen element, ki ga je treba vstaviti v ta indeks.

Spodaj je izvedba zgornjega pristopa:

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 = nov ArrayList();  // Dodajanje elementov v Arraylist // Vhodni elementi po meri al.add('Geeks');  al.add('Geeks');  // Dodajanje, ki določa indeks, ki bo dodan al.add(1, 'Geeks');  // Tiskanje elementov Arraylist System.out.println('Initial ArrayList ' + al);  // Nastavitev elementa pri 1. indeksu al.set(1, 'Za');  // Tiskanje posodobljenega Arraylist System.out.println('Updated ArrayList ' + al);  } }>

Izhod
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>

3. Odstranjevanje elementov

Če želite odstraniti element iz seznama ArrayList, lahko uporabimo odstrani(). . Ta metoda je preobremenjena za izvajanje več operacij na podlagi različnih parametrov. So naslednji:

  • odstrani (predmet): Ta metoda se uporablja za preprosto odstranitev predmeta iz seznama ArrayList. Če je takšnih objektov več, se prvi pojavitev predmeta odstrani.
  • odstrani (indeks): Ker je ArrayList indeksiran, ta metoda sprejme celoštevilsko vrednost, ki preprosto odstrani element, ki je prisoten v tem specifičnem indeksu v ArrayList. Po odstranitvi elementa se vsi elementi premaknejo v levo, da zapolnijo prostor, indeksi objektov pa se posodobijo.

primer:

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 = nov ArrayList();  // Dodajanje elementov v ArrayList // Dodatek po meri al.add('Geeks');  al.add('Geeks');  // Dodajanje elementa pri določenem indeksu al.add(1, 'Za');  // Tiskanje vseh elementov ArrayList System.out.println('Začetni ArrayList ' + al);  // Odstranjevanje elementa od zgoraj ArrayList al.remove(1);  // Tiskanje posodobljenih elementov Arraylist System.out.println('Po odstranitvi indeksa ' + al);  // Odstranjevanje tega besednega elementa v ArrayList al.remove('Geeks');  // Sedaj se tiska posodobljen ArrayList System.out.println('Po odstranitvi predmeta ' + al);  } }>

Izhod
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

4. Ponavljanje ArrayList

Obstaja več načinov za ponavljanje skozi ArrayList. Najbolj znani načini so z uporabo osnovnega za zanko v kombinaciji z a metoda get(). da dobite element pri določenem indeksu in napredno za zanko .

python pretvori bajte v niz

Primer

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 = nov ArrayList();  // Dodajanje elementov v ArrayList // z uporabo standardne metode add() al.add('Geeks');  al.add('Geeks');  al.add(1, 'Za');  // Z uporabo metode Get in // for zanke 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 + ' ');  } }>

Izhod
Geeks For Geeks Geeks For Geeks>

5. Pridobite elemente

Java
// Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG {  public static void main (String[] args) {  ArrayList seznam = nov ArrayList();  // dodamo številko list.add(9);  list.add(5);  list.add(6);  System.out.println(seznam);  // metoda pridobivanja Integer n= list.get(1);  System.out.println('pri indeksu 1 številka je:'+n);  } }>

Izhod
[9, 5, 6] at indext 1 number is:5>

6. Dodajte elemente med dve številki

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 seznam = nov ArrayList();  list.add(1);  list.add(2);  list.add(4);  System.out.println(seznam);  // vstavi manjkajoči element 3 list.add(2, 3);  System.out.println(seznam);  } }>

Izhod
[1, 2, 4] [1, 2, 3, 4]>

7. ArrayList Sort

Java
// Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG {  public static void main(String[] args)  {  ArrayList seznam = nov ArrayList();  list.add(2);  list.add(4);  list.add(3);  list.add(1);  System.out.println('Pred razvrščanjem seznama:');  System.out.println(seznam);  Zbirke.sort(seznam);  System.out.println('po seznamu razvrščanja:');  System.out.println(seznam);  } }>

Izhod
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>

8. Velikost elementov

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 seznam = nov ArrayList();  list.add(1);  list.add(2);  list.add(3);  list.add(4);  int b = list.size();  System.out.println('Velikost je:' + b);  } }>

Izhod
The size is :4>

Kompleksnost Java ArrayList

Delovanje

Časovna zapletenost

Kompleksnost prostora

Vstavljanje elementa v ArrayList

O(1)

O(N)

Odstranjevanje elementa iz ArrayList

O(N)

O(1)

Premikanje elementov v ArrayList

O(N)

O(N)

Zamenjava elementov v ArrayList

O(1)

O(1)

ArrayList v Javi je razred v ogrodju Java Collections, ki implementira vmesnik List. Tukaj so prednosti in slabosti uporabe ArrayList v Javi.

Prednosti Java ArrayList

  1. Dinamična velikost: ArrayList lahko dinamično raste in se zmanjšuje, kar olajša dodajanje ali odstranjevanje elementov po potrebi.
  2. Enostaven za uporabo: ArrayList je preprost za uporabo, zaradi česar je priljubljena izbira za številne razvijalce Java.
  3. Hiter dostop: ArrayList omogoča hiter dostop do elementov, saj je implementiran kot polje pod pokrovom.
  4. Urejena zbirka: ArrayList ohranja vrstni red elementov, kar vam omogoča dostop do elementov v vrstnem redu, v katerem so bili dodani.
  5. Podpira ničelne vrednosti: ArrayList lahko shrani ničelne vrednosti, zaradi česar je uporaben v primerih, ko je treba predstaviti odsotnost vrednosti.

Slabosti Java ArrayList

  1. Počasnejši od nizov: ArrayList je počasnejši od nizov za določene operacije, kot je vstavljanje elementov na sredino seznama.
  2. Povečana poraba pomnilnika: ArrayList potrebuje več pomnilnika kot polja, saj mora ohraniti svojo dinamično velikost in obravnavati spreminjanje velikosti.
  3. Ni varen za niti: ArrayList ni varen za niti, kar pomeni, da lahko več niti hkrati dostopa do seznama in ga spreminja, kar vodi do morebitnih tekmovalnih pogojev in poškodb podatkov.
  4. Poslabšanje zmogljivosti: Zmogljivost ArrayList se lahko poslabša, ko se število elementov na seznamu poveča, zlasti za operacije, kot je iskanje elementov ali vstavljanje elementov na sredino seznama.

Zaključek

Točke, ki si jih je treba zapomniti iz tega članka, so navedene spodaj:

  • ArrayList je del ogrodja zbirk. Podeduje razred AbstractList in implementira vmesnik List.
  • ArrayList je implementacija dinamične matrike.
  • ArrayList je mogoče inicializirati z uporabo različnih vrst konstruktorjev, na primer brez parametrov, posredovanje zbirke kot parametra in posredovanje celega števila kot parametra.
  • V ArrayList lahko izvajate naslednje operacije: dodajanje, odstranjevanje, ponavljanje in razvrščanje.

Pogosta vprašanja o ArrayList

Kaj je ArrayList v Javi?

ArrayList v Javi je del ogrodja zbirk. Uporablja se za shranjevanje elementov, velikost pa je nastavljiva.

skeniraj.naslednja java

Kako so podatki shranjeni v ArrayList?

ArrayList lahko shranjuje podatke, dokler ni velikost ArrayList polna, po tem se velikost ArrayList podvoji, če želimo shraniti še kakšen element.

Ali ArrayList dovoljuje dvojnike?

Da, ArrayList omogoča shranjevanje podvojenih vrednosti.