Preporučeno, 2024

Izbor Urednika

Razlika između ArrayList i Vector u Javi

ArrayList i Vector su klase u hijerarhiji Okvira za prikupljanje. ArrayList i Vector, oba se koriste za stvaranje dinamičkog niza objekata u kojima polje može rasti u veličini koliko i kada je potrebno. Postoje dvije osnovne razlike koje razlikuju ArrayList i Vector je da Vector pripada Legacy klasama koje su kasnije reinženjeringom podržavale klase zbirki, dok je ArrayList standardna klasa zbirke. Druga važna razlika je u tome što je ArrayList s druge strane nesinkroniziran; Vektor je sinkroniziran.

Proučimo neke druge razlike uz pomoć donje tablice usporedbe.

Tablica usporedbe

Osnova za usporedbuArrayListVektor
Osnovni, temeljniKlasa ArrayList nije sinkronizirana.Klasa vektora je sinkronizirana.
Naslijeđena klasaArrayList je standardna klasa zbirke.Vektor je naslijeđena klasa, re-inženjering za podršku klase zbirke.
Deklaracija razredaklasa ArrayListklasa Vector
ponovna dodjelaKada nije naveden, ArrayList se povećava za polovicu njegove veličine.Kada nije specificirano, vektor se povećava tako da udvostruči njegovu veličinu.
IzvođenjeKako je ArrayList nesinkroniziran, on radi brže od sustava Vector.Kako se Vector sinkronizira, radi sporije od ArrayList.
Brojanje / IteratorArrayList koristi Iterator sučelje za prolazak objekata pohranjenih u ArrayList.Vector koristi popisivanje kao i sučelje Iterator za prolazak kroz objekte pohranjene u vektorima.

Definicija ArrayList-a

ArrayList pripada popisu klasa klasičnih zbirki. Klasa ArrayList definirana je unutar java.util paketa, proširuje AbstractList klasu koja je također standardna klasa zbirke, a također implementira Listu, sučelje definirano u Zbirka sučelja. U Javi je standardni niz uvijek fiksne duljine. To znači jednom stvoreno; ne dinamički raste niti se smanjuje. Dakle, trebali biste imati prethodno znanje o duljini polja koji koristite. No, ponekad se može dogoditi da se tražena dužina otkrije u vrijeme izvođenja, tako da je za ovu vrstu situacije Java predstavila ArrayList.

ArrayList je klasa koja se koristi za dinamičko kreiranje niza koji sadrži reference na objekte. Taj niz može rasti i po potrebi. Deklaracija klase je sljedeća:

 klasa ArrayList 

Ovdje E specificira tip objekata koje će polje držati. Stvoreni niz ima promjenljivu duljinu, a povećava se i smanjuje u veličini kada se objekti dodaju ili uklanjaju s popisa.

ArrayList nije sinkroniziran, što znači da više od jedne niti može raditi na nizu u isto vrijeme. Na primjer, ako jedna nit dodaje referencu objekta na niz, a druga nit istodobno uklanja referencu objekta iz istog niza. Izrada dinamičkog niza pomoću klasa ArrayList:

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

U gornjem kodu možete vidjeti to; Stvorio sam niz objekata tipa stringa. Dodao sam neke objekte nizu S1 pomoću metode add (), a kasnije izbrisao neke objekte pomoću metode remove (). Možete promatrati ako ne odredite početnu veličinu niza koja će biti duljine '0'. Kao što možete vidjeti, veličina se povećava i smanjuje se tijekom dodavanja i brisanja elemenata.

Definicija vektora

Vector je klasa Legacy koja se reinženjeringom podržava u klasi zbirke u hijerarhiji okvira za zbirke. Klasa vektora je također definirana u java.util paketu, proširena klasom AbstractList i implementirana sučeljem List . Klasa Vector je deklarirana na sljedeći način:

 klasa Vector 

Ovdje E definira tip objekta koji će biti pohranjen u nizu. Niz kreiran pomoću Vector klase je promjenljive duljine. Povećava se dvostruko ako veličina nije specificirana. Razmotrimo stvaranje polja pomoću Vectora.

 Vektor V = novi vektor (1, 1); V.addElement ( "Tech"); V.addElement ( "Razlike"); System.out.println ("Kapacitet nakon 2 dodavanja:" + V. kapacitet ()); V.addElement ( "Između"); V.addElement ( "vektori"); System.out.println ("Trenutni kapacitet:" + V. kapacitet ()); // Izlazni kapacitet nakon 2 dodavanja: 2 Trenutni kapacitet: 4 

U gornjem kodu možete vidjeti da sam posebno spomenuo veličinu i vrijednost inkrementa u konstruktoru vektora, dok deklariram niz objekata stringova. Dakle, možete primijetiti da kako se granica polja završava, ona se povećava za vrijednost koja se daje konstruktoru za vrijeme deklaracije.

Ključne razlike između ArrayList i vektora

  1. Višestruke niti mogu raditi na ArrayListu u isto vrijeme, stoga se smatra nesinkroniziranim . Za razliku od ArrayList, samo jedna nit može raditi na vektoru u isto vrijeme; stoga se zove Sinhronizirano .
  2. U ranoj verziji Jave, neke klase i sučelja osiguravala bi metode za pohranu objekata koje su zvali Legacy classes Vector je jedna od klasa Legacy Java. Kasnije, ove naslijeđene klase su reengineered kako bi podržale klasu zbirke, dok je klasa ArrayList standardna klasa kolekcije.
  3. Kada se ograničenje polja u potpunosti iskoristi i doda se novi objekt pored iscrpljenog niza, njegova veličina raste u oba slučaja, npr. U ArrayListu, kao iu Vektoru, ali razlika je u ArrayListu, ako nije specificirana veličina povećava se za 50% trenutnog niza, dok se u vektorskom nizu udvostručuje ako vrijednost inkrementa nije specificirana.
  4. Vektor koristi Enumeraciju kao i Iterator za prelazak niza dok ArrayList koristi samo iterator za prelazak niza.
  5. Budući da je ArrayList Unsynchronized i mnoge niti mogu raditi na njemu u isto vrijeme njegova izvedba je bolja od Vector na kojem samo jedna nit može raditi u isto vrijeme.

sličnosti:

  1. ArrayList i Vector definirani su u java.util paketu.
  2. ArrayList i Vector proširuju klasu AbsractList.
  3. ArrayList i Vector oba implementiraju sučelje popisa.
  4. ArrayList i Vectors se koriste za stvaranje dinamičkog niza koji raste prema potrebi.
  5. ArrayList i Vector drže reference objekta.

Zaključak:

Zaključujem da je upotreba ArrayList-a bolja od upotrebe vektora jer se izvodi brže i bolje.

Top