Ieteicams, 2020

Redaktora Izvēle

Atšķirība starp ArrayList un Vector Java

ArrayList un Vector abas ir kolekcijas ietvara hierarhijas klases. ArrayList un Vector, abi tiek izmantoti, lai izveidotu dinamisku objektu kopumu, kur masīvs var pieaugt pēc izmēra, kad tas ir nepieciešams. Ir divas galvenās atšķirības, kas atšķirt ArrayList un Vector ir tas, ka Vector pieder Legacy klasēm, kuras vēlāk tika pārveidotas, lai atbalstītu savākšanas klases, savukārt ArrayList ir standarta kolekciju klase. Vēl viena svarīga atšķirība ir tā, ka ArrayList no otras puses nav sinhronizēta; Vector ir sinhronizēts.

Pētīsim dažas citas atšķirības, izmantojot zemāk redzamo salīdzināšanas diagrammu.

Salīdzinājuma diagramma

Salīdzinājuma pamatsArrayListVector
PamataArrayList klase nav sinhronizēta.Sinhronizēta vektoru klase.
Legacy klaseArrayList ir standarta kolekcijas klase.Vector ir mantojuma klase, kas pārbūvēta, lai atbalstītu kolekcijas klasi.
Klases deklarācijaklases ArrayListklases Vector
PārdalīšanaJa nav norādīts, ArrayList tiek palielināts par pusi tā lieluma.Ja nav norādīts, vektoru palielina, lai to dubultotu.
VeiktspējaTā kā ArrayList nav sinhronizēts, tas darbojas ātrāk nekā Vector.Tā kā Vector ir sinhronizēts, tas darbojas lēnāk nekā ArrayList.
Uzskaitīšana / IteratorsArrayList izmanto Iterator interfeisu, lai pārvietotos ArrayList saglabātajos objektos.Vektors izmanto vektoru, kā arī Iteratora interfeisu, lai pārvietotu vektoros saglabātos objektus.

ArrayList definīcija

ArrayList ietilpst standarta kolekciju klasēs. Klase ArrayList ir definēta java.util paketē, tā paplašina AbstractList klasi, kas ir arī standarta kolekcijas klase, kā arī ievieš sarakstu, saskarni, kas noteikta savākšanas saskarnēs. Java sistēmā standarta masīvs vienmēr ir fiksēts. Tas nozīmē, kad tas ir izveidots; tas nav dinamiski augt vai sarukt. Tātad, jums vajadzētu būt iepriekšējām zināšanām par izmantotā masīva garumu. Bet dažreiz var gadīties, ka nepieciešamais garums tiek atklāts runtime, lai rīkotos ar šādu situāciju java ieviesa ArrayList.

ArrayList ir klase, ko izmanto masīva, kas satur atsauces uz objektiem, dinamiskai izveidei. Šis masīvs varētu pieaugt pēc izmēra, kad tas ir nepieciešams. Klases deklarācija ir šāda:

 klases ArrayList 

Šeit E norāda objektu veidu, ko masīvs saglabās. Izveidotais masīvs ir mainīgs garums, un tas palielinās un samazinās, kad objekti tiek pievienoti vai noņemti no saraksta.

ArrayList nav sinhronizēts, tas nozīmē, ka vairāki pavedieni vienlaicīgi var darboties ar masīvu. Piemēram, ja viens pavediens pievieno objektu atsauci uz masīvu un cits pavediens noņem objektu atsauci no tā paša masīva vienlaikus. Dinamiska masīva izveidošana, izmantojot ArrayList klasi:

 ArrayList S1 = jauns ArrayList (); System.out.println ("S1 sākotnējais lielums:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.println ("Pēc pievienošanas S1 satur:" + S1); System.out.println ("S1 lielums pēc pievienošanas:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.println ("Pēc dzēšanas S1 satur:" + S1); System.out.println ("S1 izmērs pēc dzēšanas:" + S1.size ()); // S1 izejas lielums: 0 Pēc pievienošanas S1 satur: [T, E, C, H]; S1 lielums pēc pievienošanas: 4 Pēc dzēšanas S1 satur: [E, H] S1 izmērs pēc dzēšanas: 2 

Minētajā kodā to var redzēt; Es izveidoju virkni virknes tipa objektu. Es pievienoju dažus objektus masīvam S1, izmantojot pievienošanas () metodi, un vēlāk izdzēstu dažus objektus, izmantojot noņemšanas () metodi. Jūs varat novērot, ja jūs nenorādāt masīva sākotnējo lielumu, kura garums būs 0. Kā redzat, masīvs aug un samazinās, kad jūs pievienojat un dzēšat elementus.

Vector definīcija

Vektors ir mantojuma klase, kas tiek pārbūvēta, lai atbalstītu kolekcijas klases kolekcijas ietvarstruktūras hierarhiju. Vektoru klase ir definēta arī java.util paketē, ko paplašina AbstractList klase un īsteno ar List interfeisu. Vector klase ir pasludināta par sekojošu:

 klases Vector 

Šeit E nosaka objekta veidu, kas tiks saglabāts masīvā. Ar Vector klasi izveidots masīvs ir mainīgs garums. Ja palielinājums nav norādīts, tas palielinās divkāršu izmēru. Sapratīsim masīva izveidi, izmantojot vektoru.

 Vector V = jauns Vector (1, 1); V.addElement ("Tech"); V.addElement ("Atšķirības"); System.out.println ("Ietilpība pēc 2 papildinājumiem:" + V. jauda ()); V.addElement ("starp"); V.addElement ("vektori"); System.out.println ("Pašreizējā ietilpība: + + jauda ()); // Izejas jauda pēc 2 papildinājumiem: 2 Pašreizējā jauda: 4 

Iepriekš minētajā kodā jūs varat redzēt, ka es īpaši minēju izmēru un pieauguma vērtību attiecīgi vektora konstruktorā, deklarējot virkni virknes objektu. Līdz ar to jūs varat novērot, ka masīvs tiek ierobežots, palielinot to ar vērtību, kas deklarētājam tiek sniegta konstruktoram.

Galvenās atšķirības starp ArrayList un vektoriem

  1. ArrayList vienlaicīgi var darboties vairāki pavedieni, tāpēc tiek uzskatīts, ka tas nav sinhronizēts . Atšķirībā no ArrayList vienlaicīgi var darboties tikai viens pavediens; tāpēc to sauc par sinhronizētu .
  2. Sākotnējā Java versijā dažas klases un saskarnes nodrošinās objektu saglabāšanas metodes, kuras tika sauktas par Legacy klasēm. Vēlāk šīs mantotās klases tika pārveidotas, lai atbalstītu kolekcijas klasi, bet ArrayList klase ir standarta kolekciju klase.
  3. Kad masīvs ir pilnībā izmantots un blakus izplūdušajam masīvam tiek pievienots jauns objekts, tā lielums palielinās abos gadījumos, ti, ArrayList, kā arī vektorā, bet atšķirība ir tāda, ka ArrayList, ja nav norādīts lielums tiek palielināts par 50% no pašreizējā masīva, bet vektoru masīvā izmērs ir dubultojies, ja pieauguma vērtība nav norādīta.
  4. Vektors izmanto skaitīšanu, kā arī Iterator, lai šķērsotu masīvu, bet ArrayList izmanto tikai iteratoru, lai pārvietotu masīvu.
  5. Tā kā ArrayList ir Unsynchronized un daudzi pavedieni var darboties tajā pašā laikā, tā veiktspēja ir labāka nekā Vector, kurā vienlaicīgi var darboties tikai viens pavediens.

Līdzības:

  1. ArrayList un Vector abi ir definēti java.util paketē.
  2. ArrayList un Vector abi paplašina AbsractList klasi.
  3. ArrayList un Vector abas īsteno List interfeisu.
  4. ArrayList un Vectors tiek izmantoti, lai izveidotu dinamisku masīvu, kas pieaug pēc vajadzības.
  5. ArrayList un Vector abas satur objektu atsauces.

Secinājums:

Nobeigumā es saku, ka ArrayList izmantošana ir labāka nekā izmantojot Vector, jo tā darbojas ātrāk un labāk.

Top