Atšķirība starp ArrayList un Vector

ArrayList vs Vector

Vektors ievieš masīvus, kas var augt / sarukt izpildlaikā, kad daži elementi tiek pievienoti vai noņemti no tā. Tās elementiem piekļūst, izmantojot vesela skaitļa indeksu. Divi lauki - ietilpība un kapacitātes pieaugums raksturo vektoru krātuves pārvaldību. Tas ievieš četras saskarnes:
* Saraksts
* Nejauša pieeja
* Klonējams
* Serializējamas saskarnes

ArrayList, tāpat kā vektori, arī ievieš četras saskarnes. Atkal, tāpat kā vektoriem, tā lielums var mainīties izpildlaika laikā. Tam ir arī lauks ar nosaukumu kapacitāte, kura izmērs ir tikpat liels kā ArrayList.

Gan vektori, gan ArrayList ir piemēroti elementu izgūšanai no jebkuras vietas, kā arī elementu ievietošanai vai izdzēšanai no konteinera klases beigām.
No API viedokļa abi vektori, kā arī ArrayList ir ļoti līdzīgi. Tātad, kur tieši slēpjas atšķirība starp abiem? Šie jautājumi parādīs nelielu skaidrību šajā jautājumā:

1. Sinhronizācija: Vektori tiek sinhronizēti, bet ArrayList nav. Ja pievienojat vai izdzēšat elementus no ArrayList, tas tiek dēvēts par struktūras modifikāciju. Ja vairāki pavedieni vienlaikus piekļūst ArrayList ar koda bloku, ar kuru tiek modificēts saraksts, tad sarakstam jābūt ārēji sinhronizētam. Īsāk sakot, vektora saturs ir drošs pavedieniem, turpretim ArrayList nav. Ja prasībā nav minēta vītnei droša kolekcija, vajadzētu izvēlēties ArrayList, jo sinhronizācija sasniedz veiktspēju. Nesinhronizētie masīvu saraksti ir ātri.

2. Datu pieaugums: Gan ArrayList, gan vektora elementi tiek saglabāti kā masīvi, bet vektoru noklusējuma izmērs ir 10, un ArrayList nav noklusējuma lieluma. Kad kāds pievieno elementu ArrayList vai vektoram, pastāv iespēja, ka jebkura klase var izsīkt no vietas. Šādā gadījumā vektors pēc noklusējuma divkāršo tā izmēru, bet ArrayList izmērs palielinās par 50%. Vektoriem var iestatīt pieauguma vērtību, kas nav iespējama ArrayList.

3. Elementu šķērsošana: ArrayList šeit ir priekšrocība, jo jūs varat piekļūt tā elementiem, vienkārši izmantojot indeksu. Vektoru gadījumā jāizveido iterators, lai šķērsotu tā elementus.

Kopsavilkums:

1.Ja konteinera klase ir jāmaina ar vienu pavedienu vai kādu lokālu mainīgo, jums jāizmanto ArrayList.
2.Kad konteinera klasei piekļūst vairāki pavedieni, izmantojiet vektorus, pretējā gadījumā jums būs jāveic manuāla sinhronizācija.
3. Mēs varam norādīt pieauguma lielumu ar vektoru un ar ArrayList, kuru nevaram.
4.Vektors ir sinhronizēts, un ArrayList nav.
5.vektors var palielināt izmēru par dubultā; ArrayList to var palielināt par 50%.