АрраиЛист вс Вецтор
Вектор имплементира низове који могу да се повећавају / смањују током извођења када се неки елементи додају или уклоне из ње. Њеним елементима се приступа помоћу целог индекса. Два поља - повећање капацитета и капацитета, карактеришу управљање вектором. Он имплементира четири интерфејса:
* Листа
* Директног приступа
* Цлонеабле
* Сериализабле интерфејси
АрраиЛист, баш као и вектори, такође имплементира четири интерфејса. Поново, попут вектора, и његова величина се може мењати током извођења. Такође, има поље које се назива капацитет чија је величина једнака величини АрраиЛист-а.
И вектори и АрраиЛист су добри за дохваћање елемената из било које позиције, као и за уметање или брисање елемената са краја класе контејнера.
Из перспективе АПИ-ја су и вектори и АрраиЛист врло слични. Па где тачно лежи разлика између њих две? Следеће тачке ће осветлити ово питање:
1. Синхронизација: Вектори се синхронизују, али АрраиЛист није. Ако додате или избришете елементе из АрраиЛист-а, то ће се назвати структурном модификацијом. Када више нити приступа АрраиЛисту истовремено са блоком кода који мења листу, тада је потребно екстерно синхронизовати листу. Укратко, векторски садржаји нису сигурни за нити, док АрраиЛист-ови нису. Ако се у захтеву не спомиње збирка сигурна за нит, тада би требало да се одлучите за АрраиЛист када синхронизација достигне перформансе. Не-синхронизовани спискови Арраи-а су брзи.
2. Раст података: И АрраиЛист и векторски елементи се чувају као низови, али вектори имају подразумевану величину 10, а АрраиЛист нема подразумевану величину. Када се дода елемент било АрраиЛист-у или вектору, постоји шанса да било која класа понестане простора. У таквом случају, Вецтор подразумевано удвостручује своју величину, док се величина АрраиЛиста повећава за 50%. Можете додати вредност прираста у случају вектора који нису могући за АрраиЛист.
3. Путовање елементима: АрраиЛист овде има предност јер можете приступити његовим елементима једноставним коришћењем индекса. У случају вектора, морате креирати итератор за прелазак његових елемената.
Резиме:
1. Ако класу контејнера треба модификовати једна нит или нека локална варијабла, тада бисте требали користити АрраиЛист.
2.Када класи контејнера приступа више нити, онда користите векторе, у супротном ћете морати да урадите ручну синхронизацију.
3.Можемо одредити величину прираштаја са вектором и помоћу АрраиЛист-а не можемо.
4.Вектор се синхронизује, а АрраиЛист није.
5. Вектор може повећати дупло већу величину; АрраиЛист може да га повећа за 50%.