ArrayList at Vector

Anonim

ArrayList vs Vector

Ang isang vector ay nagpapatupad ng mga arrays na maaaring lumago / lumiit sa runtime kapag ang ilang elemento ay idinagdag o inalis mula dito. Ang mga elemento nito ay na-access gamit ang isang indeks ng integer. Dalawang patlang - kapasidad at kapasidad na pagtaas, makilala ang pamamahala ng imbakan ng vector. Ipinapatupad nito ang apat na interface: * Listahan * Random Access * Cloneable * Serializable interface

Ang ArrayList, tulad ng mga vectors, ay nagpapatupad din ng apat na interface. Muli, tulad ng mga vectors, ang laki nito ay maaaring magbago sa panahon ng runtime. Gayundin, may isang patlang na tinatawag na kapasidad na ang laki ay kasing laki ng laki ng ArrayList.

Ang parehong mga vectors at ArrayList ay mabuti para sa pagkuha ng mga elemento mula sa anumang posisyon at din para sa pagpasok o pagtanggal ng mga elemento mula sa dulo ng klase ng lalagyan. Mula sa pananaw ng API, parehong mga vectors pati na rin ang ArrayList ay magkatulad. Kaya kung saan eksaktong namamalagi ang pagkakaiba sa pagitan ng dalawa? Ang mga sumusunod na puntos ay magbibigay ng liwanag sa bagay na ito:

1. Pag-synchronize: Mga vectors ay naka-synchronize ngunit ArrayList ay hindi. Kung idagdag mo o tanggalin ang mga elemento mula sa isang ArrayList, tinutukoy itong pagbabago ng istruktura. Kapag ang maramihang mga thread ay nag-a-access ng isang ArrayList kasabay na may isang bloke ng code na nagpapabago sa listahan, pagkatapos ay kailangan ng isang tao na mag-synchronize sa listahan. Sa maikli, ang mga nilalaman ng vector ay thread-safe samantalang ang ArrayList ay hindi. Kung ang kinakailangan ay hindi banggitin ang thread-ligtas na koleksyon, pagkatapos ay dapat isa ay mag-opt para sa ArrayList bilang pag-synchronise hits pagganap. Ang mga hindi naka-synchronize na ArrayLists ay mabilis.

2. Paglago ng data: Ang parehong mga elemento ng ArrayList at vector ay nakaimbak bilang mga arrays, ngunit ang mga vectors ay may default na laki ng 10, at ang ArrayList ay walang default na laki. Kapag ang isang nagdadagdag ng isang elemento sa alinman sa isang ArrayList o vector, mayroong isang pagkakataon na alinman sa klase ay maaaring maubusan ng silid. Sa ganoong kaso, sa pamamagitan ng default ang isang Vector ay doble ang laki nito habang ang laki ng ArrayList ay nagdaragdag ng 50%. Maaari kang magtakda ng isang halaga ng pagdagdag sa kaso ng mga vectors na hindi posible para sa ArrayList.

3. Paglalakbay sa mga elemento: ArrayList ay may isang kalamangan dito bilang maaari mong ma-access ang mga elemento nito sa pamamagitan lamang ng paggamit ng isang index. Sa kaso ng mga vectors, kailangan mong lumikha ng isang iterator upang dumaan ang mga elemento nito.

Buod:

1. Kung ang klase ng lalagyan ay mabago sa pamamagitan ng isang solong thread o ilang lokal na variable, dapat mong gamitin ang isang ArrayList. 2.When ang lalagyan klase ay na-access sa pamamagitan ng maramihang mga thread, pagkatapos ay gamitin vectors kung hindi man ay kailangan mong gawin ang pag-synchronize ng manu-manong. 3. Maaari naming tukuyin ang laki ng pagdagdag sa vector at sa ArrayList hindi namin magagawa. 4.Ang vector ay naka-synchronize at isang ArrayList ay hindi. 5.Ang vector ay maaaring dagdagan ang laki ng dobleng; Ang ArrayList ay maaaring dagdagan ito ng 50%.