Razlika između ArrayLista i Vektora u Javi

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 1 Svibanj 2024
Anonim
OOUP Most
Video: OOUP Most

Sadržaj


Oba ArrayList i Vector su klase pod hijerarhijom Collection Framework. ArrayList i Vector, oboje se koriste za stvaranje dinamičkog niza objekata u kojima matrica može narasti u veličini prema potrebi i po potrebi. Dvije su osnovne razlike koje razlikuju ArrayList i Vector u tome što Vector pripada Legacy klasama koje su kasnije preuređene u svrhu podrške za kolekcijske razrede, dok je ArrayList standardna kolekcionarska klasa. Druga važna razlika je u tome što ArrayList s druge strane nije sinkroniziran; Vektor je sinkroniziran.

Ispitajmo neke druge razlike uz pomoć Usporedne tablice koja je prikazana dolje.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. sličnosti
  5. Zaključak

Usporedni grafikon

Osnove za usporedbuArrayListVektor
Osnovni, temeljniArrayList klasa nije sinkronizirana.Vektorska klasa je sinkronizirana.
Naslijeđena klasaArrayList je standardni zbirki klase.Vector je naslijeđena klasa, redizajnirana da podrži kolekcijsku klasu.
Deklaracija klaseklasa ArrayListklasa Vektor
ponovna dodjelaAko nije navedeno, ArrayList se povećava za polovinu njegove veličine.Kada nije određeno, vektor se povećava da udvostruči svoju veličinu.
IzvođenjeKako je ArrayList nesinkroniziran, radi brže od Vectora.Kako se Vector sinkronizira, djeluje sporije od ArrayLista.
Brojanje / IteratorArrayList koristi sučelje Iteratora za prelazak objekata pohranjenih u ArrayList.Vector koristi nabrajanje kao i sučelje iteratora za pomicanje objekata pohranjenih u Vektorima.


Definicija ArrayLista

ArrayList pripada popisu standardnih zbirki klase. Klasa ArrayList definirana je unutar java.util paket, proširuje AbstractList klase koja je također standardna klasa kolekcije, a također je implementira Popis, sučelje definirano u Zbirci sučelja. U Javi je standardni niz uvijek fiksne duljine. To znači jednom stvoreno; ne dinamički raste ili se ne smanjuje u veličini. Stoga biste trebali imati prethodno znanje o duljini niza koji koristite. No, ponekad se može dogoditi da se tražena dužina otkriva za vrijeme izvođenja, pa je za rješavanje ovakve situacije java uvela ArrayList.

ArrayList je klasa koja se koristi za dinamičko stvaranje niza koji sadrži reference na objekte. Ovaj bi niz mogao rasti u veličini i kad je potrebno. Deklaracija klase je sljedeća:

klasa ArrayList

Ovdje E određuje vrstu objekata koje će niz sadržavati. Stvoreni niz je promjenjive duljine i povećava se i smanjuje u veličini kada se objekti dodaju ili uklone s popisa.


ArrayList nije sinkroniziran što znači da na nizu može istovremeno raditi više niti. Na primjer, ako jedna nit dodaje referencu objekta nizu, a druga nit istovremeno uklanja referencu objekta iz istog polja. Stvaranje dinamičkog niza pomoću klase ArrayList:

ArrayList S1 = novi ArrayList(); System.out.ln ("Početna veličina S1:" + veličina veličine1.1.); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1 "E"); System.out.ln ("Nakon dodavanja S1 sadrži:" + S1); System.out.ln ("Veličina S1 nakon dodavanja:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Nakon brisanja S1 sadrži:" + S1); System.out.ln ("Veličina S1 nakon brisanja:" + S1.size ()); // Izlazna početna veličina S1: 0 Nakon dodavanja S1 sadrži:; Veličina S1 nakon dodavanja: 4 Nakon brisanja S1 sadrži: Veličina S1 nakon brisanja: 2

U gornjem kôdu to možete vidjeti; Stvorio sam niz objekata tipa niza. Dodao sam neke objekte u niz S1 pomoću metode dodavanja (), a kasnije sam neke objekte izbrisao pomoću metode ukloni (). Možete primijetiti ako ne odredite početnu veličinu matrice, ona će biti duljine '0'. Kao što možete vidjeti kako niz raste i smanjuje se tijekom dodavanja i brisanja elemenata.

Definicija vektora

Vector je Legacy klasa koja je redizajnirana da podrži kolekcijsku klasu u hijerarhiji Collection Framework. Klasa vektora je također definirana u java.util paket, produžen za AbstractList klase i implementirao Popis sučelje. Klasa Vector deklarirana je na sljedeći način:

klasa Vektor

Ovdje E definira vrstu objekta koji će se pohraniti u niz. Niz koji je stvoren pomoću klase Vector promjenjive je duljine. Uvećava dvostruko veću veličinu ako priraštaj nije određen. Razumijemo stvaranje polja pomoću Vektora.

Vektor V = novi Vektor(1,1); V.addElement ( "Tech"); V.addElement ( "Razlike"); System.out.ln ("Kapacitet nakon 2 dodavanja:" + V.capacity ()); V.addElement ( "Između"); V.addElement ( "vektori"); System.out.ln ("Trenutni kapacitet:" + V.kapacitet ()); // Izlazna snaga nakon 2 dodatka: 2 Trenutni kapacitet: 4

U gornjem kôdu to možete vidjeti, posebno sam spomenuo vrijednost veličine i prirasta u konstruktoru Vectora, istovremeno izjavljujući niz string-objekata. Stoga možete primijetiti da kako se granica matrice završava, povećava se za vrijednost koja je data konstruktoru tijekom deklaracije.

  1. Na ArrayListu može istovremeno raditi više niti odakle se smatra unsynchronized, Za razliku od ArrayList-a, samo jedan nit može raditi na vektoru odjednom; otuda se i zove Sinkronizirano.
  2. U ranoj verziji Jave neke klase i sučelja pružili bi metode za pohranjivanje objekata koji su se nazivali Legacy klase Vector je jedan od Legacy klase Jave. Kasnije su te naslijeđene klase preuređene u podršku za kolekcijsku klasu, dok je klasa ArrayList standardna zbirka.
  3. Kada se granica matrice u potpunosti iskoristi i doda novi objekt uz iscrpljeni niz, njegova veličina raste u oba slučaja, tj. U ArrayListu i u Vectoru, ali razlika je u ArrayListu, ako nije navedena veličina povećava se za 50% trenutne matrice, dok se u Vektorskom polju udvostručuje ako vrijednost prirasta nije navedena.
  4. Vector koristi Enumeration kao i Iterator za kretanje nizom dok ArrayList koristi iterator samo za prolazak kroz niz.
  5. Budući da je ArrayList nesinhroniziran i na njemu mogu raditi mnoge niti istovremeno, njegova je izvedba bolja od Vectora na kojem može raditi samo jedna nit istodobno.

sličnosti:

  1. Oba ArrayList i Vector definirani su u java.util paketu.
  2. I ArrayList i Vector proširuju klasu AbsractList.
  3. ArrayList i Vector provode sučelje popisa.
  4. I ArrayList i Vectors koriste se za stvaranje dinamičke matrice koja raste po potrebi.
  5. ArrayList i Vector sadrže reference na objekte.

Zaključak:

Zaključujem tvrdnjom da je upotreba ArrayLista bolja od upotrebe Vectora jer djeluje brže i bolje.