Ero ArrayListin ja Vektorin välillä Java-ohjelmassa

Kirjoittaja: Laura McKinney
Luomispäivä: 1 Huhtikuu 2021
Päivityspäivä: 1 Saattaa 2024
Anonim
Ero ArrayListin ja Vektorin välillä Java-ohjelmassa - Tekniikka
Ero ArrayListin ja Vektorin välillä Java-ohjelmassa - Tekniikka

Sisältö


ArrayList ja Vector ovat molemmat luokkakokoelman hierarkiassa. ArrayList- ja Vector-elementtejä käytetään kumpikin luomaan dynaaminen joukko objekteja, joissa taulukon koko voi kasvaa tarvittaessa. ArrayList ja Vector erottavat kaksi peruseroa: Vector kuuluu Legacy-luokkiin, jotka suunniteltiin myöhemmin uudelleen tukemaan keräysluokkia, kun taas ArrayList on vakiokokoelmaluokka. Toinen tärkeä ero on, että ArrayList ei ole synkronoitu; Vektori on synkronoitu.

Tutkitaan joitain muita eroja alla olevan vertailutaulukon avulla.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. yhtäläisyyksiä
  5. johtopäätös

Vertailutaulukko

Vertailun perusteetArrayListVektori
perustiedotArrayList-luokkaa ei ole synkronoitu.Vektoriluokka on synkronoitu.
Vanha luokkaArrayList on standardi Collection-luokka.Vector on vanha luokka, joka on suunniteltu uudelleen tukemaan keräysluokkaa.
Luokan ilmoitusluokka ArrayListluokan vektori
uudelleenkohdentaminenKun ei määritetä, ArrayList-arvoa kasvatetaan puoleen sen koosta.Kun vektoria ei määritetä, sitä suurennetaan kaksinkertaiseksi.
EsitysKoska ArrayList ei ole synkronoitu, se toimii nopeammin kuin Vector.Koska Vector on synkronoitu, se toimii hitaammin kuin ArrayList.
Enumeration / IteratorArrayList käyttää Iterator-käyttöliittymää selatakseen ArrayListiin tallennettuja objekteja.Vector käyttää luettelua ja Iterator-käyttöliittymää kuljettamaan Vektoreihin tallennettuja objekteja.


Määritelmä ArrayList

ArrayList kuuluu vakiokokoelmaluetteloon. ArrayList-luokka on määritelty java.util paketti, se laajentaa AbstractList luokka, joka on myös vakiokokoelmaluokka, ja se myös toteuttaa Lista, keräysrajapinnoissa määritetty rajapinta. Java-järjestelmässä vakiojärjestelmä on aina kiinteä. Tämä tarkoittaa kerran luotua; se ei kasva dynaamisesti tai pienenee kooltaan. Joten sinulla pitäisi olla etukäteen tieto käyttämäsi taulukon pituudesta. Mutta joskus voi käydä niin, että vaadittu pituus paljastuu suorituksen aikana, jotta tällaisen tilanteen käsittelemiseksi java esitteli ArrayListin.

ArrayList on luokka, jota käytetään ryhmän dynaamiseen luomiseen, joka sisältää viitteet objekteihin. Tämän ryhmän koko voi kasvaa tarvittaessa. Luokka-ilmoitus on seuraava:


luokka ArrayList

Tässä E määrittelee objektien tyypin, joita taulukko pitää hallussaan. Luodun taulukon pituus on vaihteleva, ja sen koko kasvaa ja pienenee, kun esineitä lisätään tai poistetaan luettelosta.

ArrayList: ää ei ole synkronoitu, mikä tarkoittaa, että useampi kuin yksi säie voi toimia taulukossa samanaikaisesti. Esimerkiksi, jos yksi säie lisää objektiohjeita taulukkoon ja toinen säie poistaa kohdeviittauksen samasta taulukosta samaan aikaan. Dynaamisen taulukon luominen ArrayList-luokan avulla:

ArrayList S1 = uusi ArrayList(); System.out.ln ("S1: n alkuperäinen koko:" + S1.koko ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("Lisäyksen jälkeen S1 sisältää:" + S1); System.out.ln ("S1: n koko lisäyksen jälkeen:" + S1.koko ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Poiston jälkeen S1 sisältää:" + S1); System.out.ln ("S1: n koko poiston jälkeen:" + S1.koko ()); // OutputS1: n alkuperäinen koko: 0 Lisäyksen jälkeen S1 sisältää:; S1: n koko lisäyksen jälkeen: 4 Poiston jälkeen S1 sisältää: S1: n koko poiston jälkeen: 2

Yllä olevassa koodissa voit nähdä sen; Loin joukon merkkijonotyyppisiä objekteja. Lisäsin joitain objekteja taulukkoon S1 käyttämällä add () -menetelmää ja poistin myöhemmin joitain objekteja käyttämällä Poista () -menetelmää. Voit tarkkailla, jos et määrittele taulukon alkuperäistä kokoa, sen pituus on 0. Kuten näet, taulukon koko kasvaa ja kutistuu, kun lisäät ja poistat elementtejä.

Määritelmä vektori

Vector on Legacy-luokka, joka suunnitellaan uudelleen tukemaan keräysluokkaa Collection Framework -hierarkiassa. Vektoriluokka on myös määritelty java.util paketti, laajennettu AbstractList luokan ja toteuttaa Lista käyttöliittymä. Vektoriluokka julistetaan seuraavasti:

luokan vektori

Tässä E määrittelee taulukkoon tallennettavan objektityypin. Vector-luokan avulla luotu taulukko on pituudeltaan vaihteleva. Se kasvaa kaksinkertaiseksi, jos lisäystä ei määritetä. Ymmärretään taulukon luominen Vektorilla.

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

Yllä olevassa koodissa voit nähdä, että mainitsin erityisesti vektorin rakentajan koon ja lisäysarvon vastaavasti ilmoittaen merkkijonoobjektien ryhmän. Siksi voit huomata, että kun taulukon raja päättyy, se kasvaa rakentajalle ilmoituksen aikana annettavalla arvolla.

  1. Useita ketjuja voisi toimia ArrayListissä samanaikaisesti, joten sitä pidetään tahdistamattomissa. Toisin kuin ArrayList, vain yksi säie voi toimia vektorissa kerrallaan; siksi sitä kutsutaan Synkronoitu.
  2. Aikaisemmassa Java-versiossa jotkut luokat ja rajapinnat tarjoaisivat menetelmiä niiden esineiden tallentamiseksi, joita kutsuttiin Legacy-luokiksi. Vector on yksi Java-luokan Legacy-luokista. Myöhemmin nämä vanhat luokat suunniteltiin uudelleen tukemaan Collection-luokkaa, kun taas ArrayList-luokka on standardi Collection-luokka.
  3. Kun taulukon raja on hyödynnetty kokonaan ja uusi objekti lisätään loppuun käytetyn taulukon viereen, sen koko kasvaa molemmissa tapauksissa eli ArrayListissä ja Vectorissä, mutta ero on siinä, että ArrayListissä, ellei sitä ole määritetty lisätään 50%: lla nykyisestä taulukosta, kun taas Vector-taulukossa kaksinkertaistetaan koko, jos lisäysarvoa ei määritetä.
  4. Vector käyttää numerointia sekä iteraattoria taulukon liikkumiseen, kun taas ArrayList käyttää iteraattoria vain taulukon liikkumiseen.
  5. Koska ArrayList on synkronoimaton ja monet säikeet voivat toimia sillä samanaikaisesti, sen suorituskyky on parempi kuin Vektorin, jolla vain yksi säie voi toimia kerrallaan.

yhtäläisyyksiä:

  1. ArrayList ja Vector määritetään molemmat java.util-paketissa.
  2. ArrayList ja Vector laajentavat molemmat AbsractList-luokkaa.
  3. ArrayList ja Vector toteuttavat molemmat List-käyttöliittymän.
  4. ArrayList- ja Vektorit-sovelluksia käytetään luomaan dynaaminen taulukko, joka kasvaa tarvittaessa.
  5. ArrayList ja Vector pitävät molemmat kohdeviittauksia.

johtopäätös:

Lopuksi sanon, että ArrayList on parempi käyttää kuin Vector, koska se toimii nopeammin ja paremmin.