ArrayList vs Vector
Vektori toteuttaa taulukot, jotka voivat kasvaa / kutistua ajon aikana, kun joitain elementtejä lisätään tai poistetaan siitä. Sen elementteihin päästään kokonaislukuindeksillä. Kaksi kenttää - kapasiteetti ja kapasiteetin lisäys - kuvaavat vektorien varastoinnin hallintaa. Se toteuttaa neljä rajapinta:
* Lista
* Satunnainen pääsy
* Kloonattava
* Sarjasovitettavat rajapinnat
ArrayList, samoin kuin vektorit, toteuttaa myös neljä rajapintaa. Jälleen, kuten vektorit, sen koko voi muuttua ajon aikana. Lisäksi siinä on kapasiteetti nimeltä kenttä, jonka koko on yhtä suuri kuin ArrayList.
Sekä vektorit että ArrayList ovat hyviä elementtien hakemiseen mistä tahansa sijainnista ja myös elementtien lisäämiseksi tai poistamiseksi säilytysluokan lopusta.
API-näkökulmasta molemmat vektorit samoin kuin ArrayList ovat hyvin samankaltaisia. Joten missä tarkalleen on ero näiden kahden välillä? Seuraavat seikat valaisevat asiaa hieman:
1. Synkronointi: Vektorit synkronoidaan, mutta ArrayList ei ole. Jos lisäät tai poista elementtejä ArrayListista, sitä kutsutaan rakennemuutokseksi. Kun useita ketjuja käyttää ArrayList-ohjelmaa samanaikaisesti luetteloa muuttavan koodilohkon kanssa, luettelo on synkronoitava ulkoisesti. Lyhyesti sanottuna, vektorisisältö on lankavarma, kun taas ArrayList: n ei. Jos vaatimuksessa ei mainita säiettä suojaavaa keruuta, pitäisi valita ArrayList, koska synkronointi saavuttaa suorituskyvyn. Synkronoimattomat ryhmäluettelot ovat nopeita.
2. Tietojen kasvu: Sekä ArrayList että vektorielementit tallennetaan taulukkoina, mutta vektorien oletuskoko on 10 ja ArrayList ei ole oletuskokoa. Kun elementti lisätään joko ArrayList tai vektoriin, on mahdollista, että jompikumpi luokka voi loppua huoneesta. Tällaisessa tapauksessa oletusarvoisesti vektori kaksinkertaistaa koonsa, kun taas ArrayList-koko kasvaa 50%. Voit asettaa lisäarvon vektoreille, mikä ei ole mahdollista ArrayListille.
3. Elementtien kulkeminen: ArrayListillä on tässä etu, koska voit käyttää sen elementtejä yksinkertaisesti hakemiston avulla. Vektorien tapauksessa sinun on luotava iteraattori sen elementtien kulkemiseksi.
Yhteenveto:
1.Jos säilöluokkaa halutaan muokata yhdellä säikeellä tai jollain paikallisella muuttujalla, sinun tulisi käyttää ArrayList-ohjelmaa.
2.Kun konttiluokkaan pääsee useilla säieillä, käytä vektoreita, muuten joudut suorittamaan manuaalisen synkronoinnin.
3.Voimme määrittää lisäyksen koon vektorilla ja ArrayListillä, jota emme voi.
4.Vektori on synkronoitu eikä ArrayList ole.
5.Vektori voi suurentaa kokoa kaksinkertaisena; ArrayList voi kasvattaa sitä 50%.