logo

ArrayList Javassa

Java ArrayList on osa Javaa kokoelman puitteet ja se on java.util-paketin luokka. Se tarjoaa meille dynaamisia taulukoita Javassa. Se voi kuitenkin olla hitaampi kuin tavalliset taulukot, mutta siitä voi olla apua ohjelmissa, joissa taulukkoa tarvitaan paljon. Tämä luokka löytyy osoitteesta java.util paketti. Pää ArrayListin etu Javassa on se, että jos ilmoitamme taulukon, meidän on mainittava koko, mutta ArrayListissä ei tarvitse mainita ArrayListin kokoa. Jos haluat mainita koon, voit tehdä sen.

Sisällysluettelo

Mikä on ArrayList Javassa?

ArrayList on Java-luokka, joka on toteutettu List-rajapinnalla. Java ArrayList, kuten nimestä voi päätellä, tarjoaa dynaamisen taulukon toiminnallisuuden, jossa kokoa ei ole määritetty taulukoksi. Lisäksi osana Collections-kehystä siinä on monia ominaisuuksia, jotka eivät ole käytettävissä taulukoiden kanssa.



ArrayList_Java

Kuva:

Tarkastetaan ArrayList Integer Object -tyypillä Tallennettu siihen kuvan kanssa.

ArrayList_Integer_Object

Java ArrayList -esimerkki

Esimerkki 1: Seuraava toteutus osoittaa, kuinka ArrayList luodaan ja käytetään mainitsemalla sen koko.

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 = uusi ArrayList (n);  // ArrayListin ilmoittaminen ArrayList arr2 = uusi ArrayList ();  // ArrayList-tiedoston tulostaminen System.out.println('Array 1:' + arr1);  System.out.println('Matriisi 2:' + arr2);  // Uusien elementtien lisääminen // luettelon loppuun kohteelle (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);  } }>

Lähtö
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>

Selitys yllä olevasta ohjelmasta:

ArrayList on dynaaminen taulukko, eikä meidän tarvitse määrittää kokoa luodessasi sitä, vaan taulukon koko kasvaa automaattisesti, kun lisäämme ja poistamme kohteita dynaamisesti. Vaikka varsinainen kirjaston toteutus voi olla monimutkaisempi, seuraava on hyvin perusidea, joka selittää taulukon toiminnan, kun taulukko tulee täyteen ja jos yritämme lisätä kohteen:

jasmine davis lapsena
  • Luo isomman kokoisen muistin kasamuistiin (esimerkiksi kaksinkertainen muisti).
  • Kopioi nykyiset muistielementit uuteen muistiin.
  • Uusi kohde on lisätty nyt, koska käytettävissä on nyt enemmän muistia.
  • Poista vanha muisti.

ArrayListin tärkeitä ominaisuuksia Javassa

  • ArrayList perii Abstract List luokkaa ja toteuttaa Lista käyttöliittymä .
  • ArrayList alustetaan koon mukaan. Kokoa kuitenkin kasvatetaan automaattisesti, jos kokoelma kasvaa tai pienenee, jos esineitä poistetaan kokoelmasta.
  • Java ArrayList antaa meille mahdollisuuden käyttää luetteloa satunnaisesti.
  • ArrayListiä ei voi käyttää kääreluokka tällaisiin tapauksiin.
  • ArrayList Javassa voidaan nähdä a vektori C++:ssa .
  • ArrayList ei ole synkronoitu. Sen vastaava synkronoitu luokka Javassa on Vektori .

Ymmärretään Java ArrayList perusteellisesti . Katso alla olevaa kuvaa:

List_Classes_Interface

Yllä olevassa kuvassa Abstract List , CopyOnWriteArrayList , ja AbstractSequentialList ovat luokat, jotka toteuttavat luettelorajapinnan. Jokaisessa mainitussa luokassa on toteutettu erillinen toiminnallisuus. He ovat:

  1. AbstractList: Tätä luokkaa käytetään muokkaamattoman listan toteuttamiseen, jolle tarvitsee vain laajentaa tätä AbstractList-luokkaa ja toteuttaa vain saada() ja koko() menetelmiä.
  2. CopyOnWriteArrayList: Tämä luokka toteuttaa luettelorajapinnan. Se on paranneltu versio ArrayList jossa kaikki muutokset (lisää, aseta, poista jne.) toteutetaan tekemällä luettelosta uusi kopio.
  3. AbstractSequentialList: Tämä luokka toteuttaa Kokoelman käyttöliittymä ja AbstractCollection-luokka. Tätä luokkaa käytetään muokkaamattoman listan toteuttamiseen, jolle tarvitsee vain laajentaa tätä AbstractList-luokkaa ja toteuttaa vain saada() ja koko() menetelmiä.

Rakentajat ArrayListissä Javassa

ArrayListin luomiseksi meidän on luotava ArrayList-luokan objekti. ArrayList-luokka koostuu erilaisista rakentajat jotka mahdollistavat taulukkoluettelon luomisen. Tässä luokassa saatavilla olevat rakentajat:

1. ArrayList()

Tätä konstruktoria käytetään tyhjän taulukkoluettelon rakentamiseen. Jos haluamme luoda tyhjän ArrayListin nimellä arr , sitten se voidaan luoda seuraavasti:

ArrayList arr = new ArrayList();>

2. ArrayList(kokoelma c)

Tätä konstruktoria käytetään muodostamaan taulukkoluettelo, joka on alustettu kokoelman c elementeillä. Oletetaan, että haluamme luoda ArrayList-arr:n, joka sisältää kokoelmassa c olevat elementit, niin se voidaan luoda seuraavasti:

ArrayList arr = new ArrayList(c);>

3. ArrayList(int kapasiteetti)

Tätä konstruktoria käytetään muodostamaan taulukkoluettelo, jonka alkuperäinen kapasiteetti on määritetty. Oletetaan, että haluamme luoda ArrayListin, jonka alkuperäinen koko on N, niin se voidaan luoda seuraavasti:

ArrayList arr = new ArrayList(N);>

Java ArrayList -menetelmät

MenetelmäKuvaus
add(int index, Object element) Tätä menetelmää käytetään tietyn elementin lisäämiseen luettelon tiettyyn paikkaindeksiin.
lisää (objekti o) Tätä menetelmää käytetään tietyn elementin lisäämiseen luettelon loppuun.
lisää kaikki (kokoelma C) Tätä menetelmää käytetään liittämään kaikki tietyn kokoelman elementit mainitun luettelon loppuun siinä järjestyksessä, että määritetyn kokoelman iteraattori palauttaa arvot.
addAll(int-indeksi, kokoelma C) Käytetään lisäämään kaikki tietystä paikasta alkavat elementit tietystä kokoelmasta mainittuun luetteloon.
asia selvä() Tätä menetelmää käytetään kaikkien elementtien poistamiseen mistä tahansa luettelosta.
klooni() Tätä menetelmää käytetään palauttamaan matala kopio ArrayLististä Javassa.
sisältää? (Objekti o) Palauttaa tosi, jos tämä luettelo sisältää määritetyn elementin.
varmista Kapasiteetti? (int minCapacity) Lisää tämän ArrayList-esiintymän kapasiteettia tarvittaessa varmistaakseen, että se sisältää vähintään vähimmäiskapasiteettiargumentin määrittämän määrän elementtejä.
jokaiselle? (kuluttajan toiminta) Suorittaa annetun toiminnon kullekin iterable-elementille, kunnes kaikki elementit on käsitelty tai toiminto tekee poikkeuksen.
saada? (int index) Palauttaa elementin määritettyyn kohtaan tässä luettelossa.
indexOf(Object O) Indeksi tietyn elementin ensimmäinen esiintyminen palautetaan tai -1, jos elementtiä ei ole luettelossa.
on tyhjä?() Palauttaa tosi, jos tämä luettelo ei sisällä elementtejä.
lastIndexOf(Object O) Tietyn elementin viimeisimmän esiintymisen indeksi palautetaan tai -1, jos elementtiä ei ole luettelossa.
listaIteraattori?() Palauttaa luetteloiteraattorin tämän luettelon elementtien päälle (oikeassa järjestyksessä).
listIterator? (int index) Palauttaa luetteloiteraattorin tämän luettelon elementtien päälle (oikeassa järjestyksessä) alkaen määritetystä kohdasta luettelossa.
poistaa? (int index) Poistaa elementin määritetystä sijainnista tässä luettelossa.
Poista? (Objekti o) Poistaa määritetyn elementin ensimmäisen esiintymän tästä luettelosta, jos se on olemassa.
poistaa kaikki? (kokoelma c) Poistaa tästä luettelosta kaikki sen elementit, jotka sisältyvät määritettyyn kokoelmaan.
Poista Jos? (Predikaattisuodatin) Poistaa kaikki tämän kokoelman elementit, jotka täyttävät annetun predikaatin.
RemoveRange?(int fromIndex, int toIndex) Poistaa tästä luettelosta kaikki elementit, joiden indeksi on välillä fromIndex, inclusive ja toIndex, poissulkeva.
säilyttää kaikki? (kokoelma c) Säilyttää vain tämän luettelon elementit, jotka sisältyvät määritettyyn kokoelmaan.
joukko? (int-indeksi, E-elementti) Korvaa tässä luettelossa määritetyn kohdan elementin määritetyllä elementillä.
koko?() Palauttaa tämän luettelon elementtien määrän.
jakaja? () Luo myöhään sitovan ja nopean jakajan tämän luettelon elementtien päälle.
aliluettelo?(int fromIndex, int toIndex) Palauttaa näkymän tämän luettelon osasta, joka on määritettyjen fromIndex- ja toIndex-arvojen välillä.
toArray() Tätä menetelmää käytetään palauttamaan taulukko, joka sisältää kaikki luettelon elementit oikeassa järjestyksessä.
toArray(Object[] O) Sitä käytetään myös palauttamaan taulukko, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä samassa järjestyksessä kuin edellinen menetelmä.
leikkaa kokoon() Tätä menetelmää käytetään ArrayListin esiintymän kapasiteetin leikkaamiseen luettelon nykyiseen kokoon.

Huomautus: Voit myös luoda yleisen ArrayListin:

// Luodaan yleinen kokonaisluku ArrayList
ArrayList arrli = new ArrayList();

Jotkut ArrayListin avainkohdat Javassa

  1. ArrayList on alleviivattu tietorakenne, jonka kokoa voidaan muuttaa tai kasvaa.
  2. ArrayList-kopiot ovat sallittuja.
  3. Lisäysjärjestys säilytetään.
  4. Heterogeeniset esineet ovat sallittuja.
  5. Tyhjä lisäys on mahdollista.

Katsotaanpa, kuinka suorittaa joitain perustoimintoja ArrayList-luettelossa, joista keskustelemme edelleen jokaisen toiminnon toteuttamisen ohella.

  • Elementin lisääminen luetteloon/Lisää elementti
  • Elementtien muuttaminen/ Aseta elementti
  • Poistetaan elementtejä/Poista elementti
  • Toistuvat elementit
  • saada elementtejä
  • lisää elementtejä kahden numeron väliin
  • Elementtien lajittelu
  • ArrayList-koko

ArrayListissä suoritetut toiminnot

1. Elementtien lisääminen

Elementin lisäämiseksi ArrayList-luetteloon voimme käyttää add()-menetelmä . Tämä menetelmä on ylikuormitettu suorittamaan useita toimintoja eri parametrien perusteella. Ne ovat seuraavat:

  • add(Object): Tätä menetelmää käytetään elementin lisäämiseen ArrayListin loppuun.
  • add(int index, Object): Tätä menetelmää käytetään elementin lisäämiseen tiettyyn hakemistoon ArrayListissä.

Alla on yllä olevan lähestymistavan toteutus:

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 = uusi ArrayList();  // Elementtien lisääminen ArrayListiin // Mukautetut syötteet al.add('Geeks');  al.add('Geeks');  // Tässä mainitaan indeksi // johon se lisätään al.add(1, 'For');  // ArrayListin kaikkien elementtien tulostaminen System.out.println(al);  } }>

Lähtö
[Geeks, For, Geeks]>

2. Elementtien muuttaminen

Elementtien lisäämisen jälkeen, jos haluamme muuttaa elementtiä, se voidaan tehdä käyttämällä aseta() menetelmä. Koska ArrayList on indeksoitu, elementin indeksi viittaa elementtiin, jota haluamme muuttaa. Siksi tämä menetelmä ottaa indeksin ja päivitetyn elementin, joka on lisättävä kyseiseen indeksiin.

Alla on yllä olevan lähestymistavan toteutus:

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 = uusi ArrayList();  // Elementtien lisääminen Arraylistiin // Mukautetut syöttöelementit al.add('Geeks');  al.add('Geeks');  // Lisäys, joka määrittää lisättävän indeksin al.add(1, 'Geeks');  // Arraylist-elementtien tulostaminen System.out.println('Initial ArrayList ' + al);  // Asetuselementti 1. indeksissä al.set(1, 'For');  // Päivitetyn Arraylistin tulostaminen System.out.println('Päivitetty ArrayList ' + al);  } }>

Lähtö
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>

3. Elementtien poistaminen

Elementin poistamiseksi ArrayLististä voimme käyttää Poista() -menetelmä . Tämä menetelmä on ylikuormitettu suorittamaan useita toimintoja eri parametrien perusteella. Ne ovat seuraavat:

  • poista (objekti): Tätä menetelmää käytetään yksinkertaisesti objektin poistamiseen ArrayLististä. Jos tällaisia ​​objekteja on useita, objektin ensimmäinen esiintyminen poistetaan.
  • poista (int index): Koska ArrayList on indeksoitu, tämä menetelmä ottaa kokonaislukuarvon, joka yksinkertaisesti poistaa kyseisessä ArrayList-indeksissä olevan elementin. Elementin poistamisen jälkeen kaikki elementit siirretään vasemmalle täyttämään tila ja objektien indeksit päivitetään.

Esimerkki:

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 = uusi ArrayList();  // Elementtien lisääminen ArrayListiin // Mukautettu lisäys al.add('Geeks');  al.add('Geeks');  // Elementin lisääminen tiettyyn indeksiin al.add(1, 'For');  // ArrayListin kaikkien elementtien tulostaminen System.out.println('Initial ArrayList ' + al);  // Elementin poistaminen ylhäältä ArrayList al.remove(1);  // Päivitettyjen Arraylist-elementtien tulostaminen System.out.println('Indeksin poiston jälkeen ' + al);  // Tämän sanaelementin poistaminen ArrayLististä al.remove('Geeks');  // Tulostetaan päivitetty ArrayList System.out.println('Objektin poiston jälkeen ' + al);  } }>

Lähtö
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

4. ArrayListin iterointi

On olemassa useita tapoja iteroida ArrayListin läpi. Tunnetuin tapa on käyttää perus silmukalle yhdessä a:n kanssa get() -menetelmä saadaksesi elementin tietyssä indeksissä ja edistynyt silmukaksi .

c++ pari

Esimerkki

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 = uusi ArrayList();  // Elementtien lisääminen ArrayListiin // käyttämällä tavallista add()-menetelmää al.add('Geeks');  al.add('Geeks');  al.add(1, 'For');  // Käyttämällä Get-metodia ja // for-silmukkaa 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 + ' ');  } }>

Lähtö
Geeks For Geeks Geeks For Geeks>

5. Hanki elementtejä

Java
// Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG {  public static void main (String[] args) {  ArrayList lista = new ArrayList();  // lisää numero lista.add(9);  list.add(5);  list.add(6);  System.out.println(lista);  // hanki menetelmä Kokonaisluku n= list.get(1);  System.out.println('at indext 1 numero on:'+n);  } }>

Lähtö
[9, 5, 6] at indext 1 number is:5>

6. Lisää elementtejä kahden numeron väliin

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 lista = new ArrayList();  list.add(1);  list.add(2);  list.add(4);  System.out.println(lista);  // lisää puuttuva elementti 3 list.add(2, 3);  System.out.println(lista);  } }>

Lähtö
[1, 2, 4] [1, 2, 3, 4]>

7. ArrayList Lajittele

Java
// Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG {  public static void main(String[] args)  {  ArrayList lista = new ArrayList();  list.add(2);  list.add(4);  list.add(3);  list.add(1);  System.out.println('Ennen luettelon lajittelua:');  System.out.println(lista);  Collections.sort(list);  System.out.println('luettelon lajittelun jälkeen:');  System.out.println(lista);  } }>

Lähtö
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>

8. Elementtien koko

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 lista = new ArrayList();  list.add(1);  list.add(2);  list.add(3);  list.add(4);  int b = list.size();  System.out.println('Koko on :' + b);  } }>

Lähtö
The size is :4>

Java ArrayListin monimutkaisuus

Operaatio

Aika monimutkaisuus

Avaruuden monimutkaisuus

Elementin lisääminen ArrayListiin

O(1)

PÄÄLLÄ)

Elementin poistaminen ArrayLististä

PÄÄLLÄ)

O(1)

Elementtien läpikulku ArrayListissä

PÄÄLLÄ)

PÄÄLLÄ)

Elementtien vaihtaminen ArrayListissä

O(1)

O(1)

ArrayList Javassa on Java Collections -kehyksen luokka, joka toteuttaa List-rajapinnan. Tässä on ArrayListin käytön edut ja haitat Javassa.

Java ArrayListin edut

  1. Dynaaminen koko: ArrayList voi kasvaa ja pienentyä dynaamisesti, mikä tekee elementtien lisäämisestä tai poistamisesta helppoa tarpeen mukaan.
  2. Helppokäyttöinen: ArrayList on helppokäyttöinen, joten se on suosittu valinta monille Java-kehittäjille.
  3. Nopea pääsy: ArrayList tarjoaa nopean pääsyn elementteihin, koska se on toteutettu konepellin alla.
  4. Järjestetty kokoelma: ArrayList säilyttää elementtien järjestyksen, jolloin voit käyttää elementtejä niiden lisäysjärjestyksessä.
  5. Tukee nolla-arvoja: ArrayList voi tallentaa nolla-arvoja, mikä tekee siitä hyödyllisen tapauksissa, joissa arvon puuttuminen on esitettävä.

Java ArrayListin haitat

  1. Hitaampi kuin taulukot: ArrayList on hitaampi kuin taulukot tietyissä toiminnoissa, kuten elementtien lisäämisessä luettelon keskelle.
  2. Lisääntynyt muistin käyttö: ArrayList vaatii enemmän muistia kuin taulukot, koska sen on säilytettävä dynaaminen kokonsa ja käsiteltävä koon muuttaminen.
  3. Ei säikeen turvallinen: ArrayList ei ole säikeen turvallinen, mikä tarkoittaa, että useat säikeet voivat käyttää ja muokata luetteloa samanaikaisesti, mikä voi johtaa mahdollisiin kilpailuolosuhteisiin ja tietojen vioittumiseen.
  4. Suorituskyvyn heikkeneminen: ArrayListin suorituskyky voi heikentyä listan elementtien määrän kasvaessa, erityisesti kun on kyse toiminnoista, kuten elementtien etsimisestä tai elementtien lisäämisestä luettelon keskelle.

Johtopäätös

Tästä artikkelista muistettavat seikat on mainittu alla:

  • ArrayList on osa Collections-kehystä. Se perii AbstractList-luokan ja toteuttaa List-rajapinnan.
  • ArrayList on dynaamisen taulukon toteutus.
  • ArrayList voidaan alustaa käyttämällä erilaisia ​​konstruktorityyppejä, kuten ilman parametreja, kokoelman välittämistä parametrina ja kokonaisluvun välittämistä parametrina.
  • Toiminnot voidaan suorittaa ArrayListissä seuraavasti: Lisääminen, poistaminen, iterointi ja lajittelu.

ArrayListin usein kysytyt kysymykset

Mikä on ArrayList Javassa?

Javan ArrayList on osa Collections-kehystä. Sitä käytetään elementtien säilyttämiseen ja kokoa voidaan muuttaa.

käänteinen merkkijono javassa

Miten tiedot tallennetaan ArrayListissä?

ArrayList voi tallentaa tietoja, kunnes ArrayList-koko on täynnä, jonka jälkeen ArrayListin koko tuplataan, jos haluamme tallentaa lisää elementtejä.

Salliiko ArrayList kaksoiskappaleet?

Kyllä, ArrayList sallii päällekkäisten arvojen tallentamisen.