Atšķirība starp ArrayList un Vector Java

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 1 Maijs 2024
Anonim
C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04
Video: C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04

Saturs


Gan ArrayList, gan Vector ir klases kolekcijas ietvara hierarhijā. ArrayList un Vector tiek izmantoti, lai izveidotu dinamisku objektu masīvu, kur masīva izmērs var pieaugt pēc vajadzības. Ir divas galvenās atšķirības, kas atšķir ArrayList un Vector: Vector pieder Legacy klasēm, kuras vēlāk tika pārveidotas, lai atbalstītu kolekciju klases, turpretim ArrayList ir standarta kolekcijas klase. Vēl viena būtiska atšķirība ir tā, ka, no otras puses, ArrayList nav sinhronizēta; Vektors ir sinhronizēts.

Ļaujiet mums izpētīt dažas citas atšķirības, izmantojot salīdzināšanas diagrammu, kas parādīta zemāk.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Līdzības
  5. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsArrayListVektors
PamataArrayList klase nav sinhronizēta.Vektoru klase ir sinhronizēta.
Mantojuma klaseArrayList ir standarta kolekcijas klase.Vector ir mantota klase, kas pārveidota, lai atbalstītu kolekcijas klasi.
Klases deklarācijaklases ArrayListklases vektors
PārdaleJa nav norādīts, ArrayList tiek palielināts par pusi no tā lieluma.Ja tas nav norādīts, vektors tiek palielināts, lai dubultotu tā lielumu.
PerformanceTā kā ArrayList nav sinhronizēts, tas darbojas ātrāk nekā Vector.Tā kā Vector tiek sinhronizēts, tas darbojas lēnāk nekā ArrayList.
Uzskaitīšana / atkārtošanaArrayList izmanto Iterator interfeisu, lai pārvietotos objektos, kas glabājas ArrayList.Vektors izmanto skaitīšanu, kā arī Iterator interfeisu, lai pārvietotos objektos, kas tiek glabāti vektoros.


ArrayList definīcija

ArrayList pieder standarta kolekcijas klašu sarakstam. ArrayList klase ir definēta java.util pakete, tā paplašina AbstractList klase, kas ir arī standarta kolekcijas klase, un to arī īsteno Saraksts, saskarne, kas definēta kolekcijas saskarnēs. Java valodā standarta masīvs vienmēr ir noteikta garuma. Tas nozīmē, ka reiz izveidots; tas dinamiski nepieaug un nesamazinās pēc lieluma. Tātad, jums ir jābūt iepriekšējām zināšanām par izmantotā masīva garumu. Bet dažreiz var gadīties, ka izpildlaiks tiek atklāts nepieciešamais garums, lai rīkotos ar šāda veida situāciju java iepazīstināja ar ArrayList.

ArrayList tiek izmantota masīva, kas satur atsauces uz objektiem, dinamiskai izveidošanai. Šī masīva apjoms var pieaugt pēc vajadzības. Klases deklarācija ir šāda:

klases ArrayList

Šeit E norāda objektu tipus, kurus turēs masīvs. Izveidotajam masīvam ir mainīgs garums, un, palielinot vai samazinot izmēru, kad objekti tiek pievienoti vai izņemti no saraksta.


ArrayList nav sinhronizēts, tas nozīmē, ka masīvā vienlaikus var darboties vairāk nekā viens pavediens. Piemēram, ja viens pavediens pievieno objekta atsauci masīvam, bet cits pavediens - objekta atsauces noņemšanu no tā paša masīva vienlaikus. Dinamiska masīva izveidošana, izmantojot ArrayList klasi:

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

Iepriekš redzamajā kodā to varat redzēt; Es izveidoju virkni objektu virknes tipa. Es pievienoju dažus objektus masīvam S1, izmantojot pievienošanas () metodi, un vēlāk dažus objektus izdzēsu, izmantojot metodi noņemt (). Varat novērot, ja nenorādāt masīva sākotnējo izmēru, tā garums būs “0”. Kā redzat, pievienojot un izdzēšot elementus, masīvs palielinās un sarūk.

Vektoru definīcija

Vector ir mantotā klase, kas tiek pārveidota tā, lai atbalstītu kolekcijas klasi kolekcijas ietvara hierarhijā. Vektoru klase ir definēta arī java.util pakete, pagarināta par AbstractList klase un īstenojusi Saraksts saskarne. Vektorklase tiek pasludināta par sekojošu:

klases vektors

Šeit E definē objekta veidu, kas tiks saglabāts masīvā. Masīvs, kas izveidots, izmantojot Vector klasi, ir mainīga garuma. Ja palielinājums nav norādīts, tas palielinās dubultā. Let's saprast masīva izveidi, izmantojot Vector.

Vektors V = jauns vektors(1,1); V.addElement ("Tech"); V.addElement ("Atšķirības"); System.out.ln ("Jauda pēc 2 pievienošanas:" + V.kapacitāte ()); V.addElement ("Starp"); V.addElement ("Vektori"); System.out.ln ("Pašreizējā jauda:" + V. jauda ()); // Izejas jauda pēc 2 pievienošanas: 2 Pašreizējā jauda: 4

Iepriekš redzamajā kodā jūs varat redzēt, ka es īpaši pieminēju lieluma un pieauguma vērtību attiecīgi vektora konstruktorā, vienlaikus deklarējot virkņu objektu masīvu. Tādējādi jūs varat novērot, ka, masīva robežai beidzoties, tas palielinās par vērtību, kas tiek sniegta konstruktoram deklarēšanas laikā.

  1. ArrayList vienlaikus varēja darboties vairāki pavedieni, tāpēc tas tiek uzskatīts nesinhronizēts. Atšķirībā no ArrayList, vektorā vienlaikus var darboties tikai viens pavediens; tāpēc to sauc Sinhronizēts.
  2. Java agrīnajā versijā dažas klases un saskarnes nodrošinās metodes to objektu glabāšanai, kurus sauca par Legacy klasēm. Vektoru ir viena no Java mantotajām klasēm. Vēlāk šīs mantotās klases tika pārveidotas, lai atbalstītu kolekcijas klasi, turpretim ArrayList klase ir standarta kolekcijas klase.
  3. Kad masīva limits ir pilnībā izmantots un blakus izsmeltajam masīvam tiek pievienots jauns objekts, tā izmērs palielinās abos gadījumos, ti, ArrayList, kā arī Vector, bet atšķirība ir tā, ka ArrayList, ja nav norādīts lielums tiek palielināts par 50% no pašreizējā masīva, turpretī vektoru masīvā tiek dubultots izmērs, ja pieauguma vērtība nav norādīta.
  4. Veids masīva pārvietošanai izmanto skaitīšanu, kā arī Iteratoru, turpretim masīva pārvietošanai ArrayList iterators izmanto tikai iteratoru.
  5. Tā kā ArrayList nav sinhronizēts un tajā var darboties daudzi pavedieni, tā veiktspēja ir labāka nekā Vector, kurā vienlaikus var darboties tikai viens pavediens.

Līdzības:

  1. Gan ArrayList, gan Vector ir definēti pakotnē java.util.
  2. Gan ArrayList, gan Vector paplašina AbsractList klasi.
  3. Gan ArrayList, gan Vector īsteno saraksta saskarni.
  4. Gan ArrayList, gan vektori tiek izmantoti, lai izveidotu dinamisku masīvu, kas pēc vajadzības palielinās.
  5. Gan ArrayList, gan Vector satur objekta atsauces.

Secinājums:

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