Atšķirība starp ArrayList un Vector Java
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.
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Līdzības
- Secinājums
Salīdzināšanas tabula
Salīdzināšanas pamats | ArrayList | Vektors |
---|---|---|
Pamata | ArrayList klase nav sinhronizēta. | Vektoru klase ir sinhronizēta. |
Mantojuma klase | ArrayList ir standarta kolekcijas klase. | Vector ir mantota klase, kas pārveidota, lai atbalstītu kolekcijas klasi. |
Klases deklarācija | klases ArrayList | klases vektors |
Pārdale | Ja 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. |
Performance | Tā 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šana | ArrayList 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 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. 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 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ā. Nobeigumā es saku, ka ArrayList lietošana ir labāka nekā Vector izmantošana, jo tā darbojas ātrāk un labāk.
Vektoru definīcija
Līdzības:
Secinājums: