Suositeltava, 2024

Toimituksen Valinta

Ero ArrayListin ja Vectorin välillä Java: ssa

ArrayList ja Vector ovat molemmat luokkoja Collection Framework -hierarkiassa. ArrayList ja Vector, molempia käytetään luomaan dynaaminen joukko kohteita, joissa matriisi voi kasvaa koon mukaan ja tarvittaessa. On olemassa kaksi erilaista eroa, jotka erottavat ArrayListin ja Vectorin, että Vector kuuluu Legacy-luokkiin, jotka myöhemmin rakennettiin uudelleen keräilyluokkien tueksi, kun taas ArrayList on vakio-keräilyklass. Toinen tärkeä ero on se, että ArrayList ei ole synkronoitu toisaalta; Vektori on synkronoitu.

Tarkastellaan joitakin muita eroja alla olevan taulukon avulla.

Vertailukaavio

Vertailun perusteetArrayListVektori
perustiedotArrayList-luokkaa ei synkronoida.Vektoriluokka on synkronoitu.
Perinteinen luokkaArrayList on tavallinen kokoelma.Vektori on perinnöllinen luokka, joka on suunniteltu uudelleen kokoelmaluokan tukemiseksi.
Luokan julistusluokka ArrayListluokka Vektori
uudelleenkohdentaminenKun sitä ei ole määritetty, ArrayListia lisätään puoleen sen koosta.Kun sitä ei ole määritetty, vektoria kasvatetaan kaksinkertaistamaan sen koko.
EsitysKoska ArrayList on synkronoimaton, se toimii nopeammin kuin Vector.Koska Vector on synkronoitu, se toimii hitaammin kuin ArrayList.
Enumeration / IteratorArrayList käyttää Iterator-käyttöliittymää siirtämään ArrayListiin tallennettuja kohteita.Vektori käyttää laskemista sekä Iterator-käyttöliittymää vektoreihin tallennettujen kohteiden siirtämiseen.

Määritelmä ArrayList

ArrayList kuuluu vakiokokoelmaluetteloon. Luokan ArrayList on määritelty java.util- paketin sisälle, se laajentaa AbstractList- luokkaa, joka on myös vakio-keräilyluokka, ja se toteuttaa myös List- yhteyden, joka on määritelty Collection-rajapinnoissa. Java: ssa vakiotyyppi on aina kiinteä. Se tarkoittaa, kun se on luotu; se ei kasva dynaamisesti tai kutistuu. Joten sinun pitäisi olla etukäteen tietoa käytetyn taulukon pituudesta. Mutta joskus saattaa käydä niin, että vaadittu pituus paljastuu ajon aikana, jotta tällainen tilanne voitaisiin käsitellä java esitteli ArrayListin.

ArrayList on luokka, jota käytetään dynaamisen luomiseen sellaiselle taulukolle, joka pitää viittaukset kohteisiin. Tämä taulukko voisi kasvaa koon mukaan. Luokan ilmoitus on seuraava:

 luokka ArrayList 

Tässä E määrittelee sellaisten objektien tyypin, joita matriisi pitää. Luodun taulukon pituus on vaihteleva, ja se kasvaa ja pienenee, kun kohteita lisätään tai poistetaan luettelosta.

ArrayList ei ole synkronoitu, joten useampi kuin yksi säike voi toimia samanaikaisesti ryhmässä. Jos esimerkiksi yksi lanka lisää objektiviitteen ryhmään ja toinen lanka poistaa objektiviitteen samasta taulukosta samanaikaisesti. Dynaamisen taulukon luominen käyttäen ArrayList-luokkaa:

 ArrayList S1 = uusi ArrayList (); System.out.println ("S1: n alkuperäinen koko:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("Lisäyksen jälkeen S1 sisältää:" + S1); System.out.println ("S1: n koko lisäyksen jälkeen:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Poistamisen jälkeen S1 sisältää:" + S1); System.out.println ("S1: n koko poistamisen jälkeen:" + S1.size ()); // S1: n lähtöteho: 0 Lisäyksen jälkeen S1 sisältää: [T, E, C, H]; S1: n koko lisäyksen jälkeen: 4 Poistamisen jälkeen S1 sisältää: [E, H] S1: n koko poiston jälkeen: 2 

Yllä olevassa koodissa näet sen; Olen luonut joukon merkkityyppisiä kohteita. Lisäsin eräitä objekteja ryhmään S1 käyttämällä add () -menetelmää ja poistin myöhemmin joitakin objekteja poistamalla () -menetelmällä. Voit tarkkailla, jos et määritä taulukon alkukokoa, jonka pituus on '0'. Kuten näet, taulukko kasvaa ja pienenee, kun lisäät ja poistat elementtejä.

Määritelmä Vector

Vector on Legacy-luokka, joka on suunniteltu uudelleen tukemaan kokoelma-luokkaa Collection Framework -hierarkiassa. Vektoriluokka määritellään myös java.util- paketissa, jota laajentaa AbstractList- luokka ja joka toteutetaan List- rajapinnalla. Vektoriluokka ilmoitetaan seuraavasti:

 luokka Vektori 

Tässä E määrittelee kohteen tyypin, joka tallennetaan ryhmään. Vektoriluokkaa käyttäen luodun taulukon pituus on vaihteleva. Se kasvaa kaksinkertaiseksi, jos lisäystä ei ole määritetty. Ymmärretään joukon luominen käyttäen vektoria.

 Vektori V = uusi vektori (1, 1); V.addElement ( "Tech"); V.addElement ( "Erot"); System.out.println ("Kapasiteetti 2 lisäyksen jälkeen:" + V. kapasiteetti ()); V.addElement ( "välissä"); V.addElement ( "Vektorit"); System.out.println ("Nykyinen kapasiteetti: + + kapasiteetti ()); // Lähtöteho 2 lisäyksen jälkeen: 2 Nykyinen kapasiteetti: 4 

Yllä olevassa koodissa näet, että mainitsin erityisesti koko ja lisäysarvon vektorin konstruktorissa vastaavasti, kun ilmoitin merkkijonon joukon. Näin ollen voit huomata, että matriisin päättymisrajana se kasvaa rakentajalle annetulla arvolla ilmoituksen yhteydessä.

Keskeiset erot ArrayListin ja vektorien välillä

  1. Useita säikeitä voi toimia ArrayListissä samanaikaisesti, joten sitä pidetään synkronoimattomana . Toisin kuin ArrayList, vain yksi lanka voi toimia vektorilla kerrallaan; Siksi sitä kutsutaan synkronoiduksi .
  2. Java: n varhaisessa versiossa jotkut luokat ja rajapinnat tarjoaisivat menetelmiä esineiden tallentamiseksi. Niitä kutsuttiin Legacy-luokiksi Vektori on yksi Legacy-luokan luokista. Myöhemmin nämä vanhat luokat on muotoiltu uudelleen kokoelmaluokan tukemiseksi, kun taas ArrayList-luokka on vakio Collection-luokka.
  3. Kun taulukon raja on täysin hyödynnetty ja uusi kohde lisätään tyhjennetyn taulukon viereen, sen koko kasvaa molemmissa tapauksissa eli ArrayListissä ja myös vektorissa, mutta ero on siinä, että ArrayListissä, jos sitä ei ole määritetty, koko kasvaa 50% nykyisestä taulukosta, kun taas vektoriryhmässä koko on kaksinkertainen, jos lisäysarvoa ei ole määritetty.
  4. Vektori käyttää Enumeration-ohjelmaa sekä Iteratoria matriisin siirtämiseksi, kun taas ArrayList käyttää vain iteratoria matriisin kulkua varten.
  5. Koska ArrayList on Unsynchronized ja monet säikeet voivat toimia siinä samanaikaisesti, sen suorituskyky on parempi kuin Vector, jossa vain yksi säike voi toimia kerrallaan.

yhtäläisyyksiä:

  1. ArrayList ja Vector molemmat on määritelty java.util-paketissa.
  2. ArrayList ja Vector laajentavat AbsractList-luokkaa.
  3. ArrayList ja Vector molemmat toteuttavat List-liitännän.
  4. ArrayListia ja Vektoreita käytetään luomaan dynaaminen taulukko, joka kasvaa tarpeen mukaan.
  5. ArrayList ja Vector molemmat pitävät kohteen viitteitä.

johtopäätös:

Lopuksi totean, että ArrayListin käyttö on parempi kuin Vectorin käyttäminen nopeammin ja paremmin.

Top