Vertailukaavio
Vertailun perusteet | Lista | ArrayList |
---|---|---|
perustiedot | Luettelo on liitäntä | ArrayList on vakio kokoelmaluokka. |
Syntaksi | liitäntäluettelo | luokka ArrayList |
Laajennetaan / Toteuta | Luettelorajapinta laajentaa keräyskehystä. | ArrayList laajentaa AbstractListia ja toteuttaa List Interface -ohjelmaa. |
nimiavaruus | System.Collections.Generic. | System.Collections. |
Työ | Sitä käytetään luomaan luettelo elementeistä (esineistä), jotka liittyvät niiden indeksinumeroihin. | ArrayListiä käytetään luomaan dynaaminen taulukko, joka sisältää esineitä. |
Luettelon määritelmä
Luettelo on rajapinta, joka laajentaa kokoelma- kehystä. Luettelorajapinta kuvaa peräkkäin järjestettyjen elementtien kokoelman. Luettelorajapinta toteutetaan seuraavilla tavallisilla keräilyluokilla, kuten ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Listan rajapinnassa on elementtejä, jotka liittyvät niiden indeksinumeroihin. Voit käyttää luettelon elementtiä luettelonsa sijainnin (indeksin) perusteella. Luettelorajapinnan avulla luotu lista alkaa nollaan perustuvalla indeksillä.
Kokoelmakehyksen perimien menetelmien lisäksi List-rajapinta määrittelee myös jonkin oman menetelmän. Listan käyttöliittymän lisäämät menetelmät ovat: (int, E) ja addAll (int, Collection) . Nämä menetelmät lisää luetteloon elementin niiden indeksin mukaan. Luettelossa olevat menetelmät voivat heittää poikkeuksen, kuten UnsupportedOperationException, jos menetelmä ei pysty muokkaamaan luetteloa. Kun yksi luettelossa oleva objekti ei ole yhteensopiva toisen luettelon objektin kanssa, ClassCastException heitetään.Nullelementit eivät ole sallittuja luettelossa, jos yrität lisätä nollaobjektin luetteloon, NullPointerException heitetään.
Voit saada elementin luettelosta käyttämällä get () -menetelmää. Voit asettaa luettelon elementin arvon käyttämällä asetettua () -menetelmää. Voit myös saada luettelon alaluettelosta käyttämällä menetelmäluetteloa () . Se on kätevää toimia alaluettelossa luettelon sijaan.
Määritelmä ArrayList
Yksi tavallisista Collection-luokista on ArrayList, joka laajentaa AbstractList- luokkaa ja toteuttaa myös List- liitännän. ArrayList-luokkaa käytetään luomaan dynaamiset ryhmät, jotka kasvavat ja kutistuvat aina kun niitä tarvitaan. ArrayList-luokan avulla luotu lista on vain objektien joukko. Java: ssa vakio-ryhmällä on kiinteä pituus, joten sinun on tiedettävä joukon koko etukäteen. Saattaa kuitenkin olla, että et ehkä tiedä, mitä matriisin pituus tarvitsee, ennen kuin se kestää. Näin ollen keräyskehys esitteli ArrayList-luokan, jotta tämä ongelma voitaisiin ratkaista.
ArrayListissä on rakentajia, jotka luovat ryhmän intial-kapasiteetillaan. Vaikka luokan ArrayList-objektin kapasiteetti kasvaa automaattisesti, kun elementit lisätään ryhmään, voit silti lisätä manuaalisesti ArrayList-objektin kapasiteettia menetelmällä, jolla varmistetaan kapasiteetti () . On parempi lisätä matriisin kapasiteettia aluksi sen sijaan, että muisti myöhemmin uudelleen. Koska uudelleenjakaminen on kalliimpaa kuin muistin jakaminen kerralla.
Listan ja ArrayListin väliset keskeiset erot
- Yksi tärkeimmistä eroista Listin ja ArrayListin välillä on se, että luettelo on rajapinta ja ArrayList on vakio Collection- luokka .
- Listan rajapinta laajentaa kokoelma- kehystä, kun taas ArrayList laajentaa AbstractList- luokan ja toteuttaa List- rajapinnat.
- List-rajapinnan nimiavaruus on System.Collection.Generic, kun taas ArrayListin nimiavaruus on System.Collection .
- Luettelorajapinta luo joukon elementtejä, jotka tallennetaan sarjaan ja jotka tunnistetaan tai niitä käytetään niiden indeksinumerolla. Toisaalta ArrayList luo joukon kohteita, joissa matriisi voi kasvaa dynaamisesti tarvittaessa.
johtopäätös:
ArrayList voittaa staattisen taulukon ongelman tavallisessa Java: ssa, eli matriisi ei voi kasvaa kokoa, kun se on luotu. Kun taulukko luodaan ArrayListin avulla, syntyy dynaaminen taulukko, joka voi kasvaa ja pienentää kokoa tarvittaessa. Normaali Collection-luokan ArrayList laajentaa List-liitäntää.