ArrayList ja Vector
ArrayList vs. Vector
Vektori toteuttaa matriiseja, jotka voivat kasvaa / kutistua ajon aikana, kun osa elementeistä lisätään tai poistetaan. Sen elementtejä käytetään kokonaislukuindeksinä. Kaksi kenttää - kapasiteetti ja kapasiteetti kasvaa, kuvaavat vektorin tallennuksen hallintaa. Se toteuttaa neljä rajapintaa: * Luettelo * Satunnainen pääsy * Cloneable * Serialisoituvat liitännät
ArrayList, aivan kuten vektorit, toteuttaa myös neljä rajapintaa. Jälleen, kuten vektorit, sen koko voi muuttua ajon aikana. Lisäksi sillä on kenttä nimeltä kapasiteetti, jonka koko on yhtä suuri kuin ArrayListin koko. Molemmat vektorit ja ArrayList ovat hyviä elementtien noutamisessa mistä tahansa paikasta ja myös elementtien asettamisesta tai poistamisesta säiliöluokan päästä. API-näkökulmasta molemmat vektorit samoin kuin ArrayList ovat hyvin samankaltaisia. Joten, missä on juuri näiden kahden välinen ero? Seuraavat seikat antavat valolle tämän asian:
1. Synkronointi: Vektorit synkronoituvat, mutta ArrayList ei ole. Jos lisäät tai poistat elementtejä ArrayLististä, sitä kutsutaan rakenteelliseksi muutokseksi. Kun useat kierteet pääsevät käyttämään ArrayList-koodia samanaikaisesti luettelon muokkauskoodin kanssa, luetteloa täytyy synkronoida ulkopuolisesti. Lyhyesti sanottuna vektorin sisältö on säikeistä turvallinen, kun taas ArrayList ei ole. Jos vaatimuksessa ei mainita säikeiden turvallista keräämistä, kannattaa valita ArrayList, kun synkronointi osuu suorituskykyyn. Epäsymmetriset ArrayListit ovat nopeita. 2. Tietojen kasvu: Sekä ArrayList- että vektorielementit tallennetaan ryhmiksi, mutta vektoreilla on oletuskerroin 10 ja ArrayListillä ei ole oletuskokoa. Kun yksi lisätään elementtiin joko ArrayList tai vektori, on olemassa mahdollisuus, että joko luokka voi loppua huoneesta. Tällaisessa tapauksessa oletusarvoisesti Vector kaksinkertaistaa sen koon, kun ArrayList-koko kasvaa 50%. Voit asettaa lisäarvon vektoreiden tapauksessa, mikä ei ole mahdollista ArrayList-ohjelmassa. 3. Elementtien siirtyminen: ArrayListillä on tässä etuna, kun voit käyttää sen elementtejä yksinkertaisesti käyttämällä indeksiä. Vektoreiden tapauksessa sinun on luotava iteraattori, jotta se voi siirtyä sen elementteihin. Yhteenveto: 1.Jos konttiluokkaa muutetaan yhdellä säikeellä tai jonkin paikallisen muuttujan avulla, käytä ArrayList-ohjelmaa. 2.Kun säiliöluokkaan pääsee useampi kierre, käytä sitten vektoreita muutoin sinun on tehtävä manuaalinen synkronointi. 3. Voimme määrittää inkrementtikokoa vektorilla ja ArrayListin kanssa, jota emme voi. 4.A-vektori on synkronoitu ja ArrayList ei ole. 5.A-vektori voi lisätä kokoa kaksinkertaisella; ArrayList voi lisätä sitä 50%.