Проучимо неке друге разлике уз помоћ табеле за упоређивање која је приказана испод.
Цомпарисон Цхарт
Основа за поређење | Низ листа | Вецтор |
---|---|---|
Басиц | Класа АрраиЛист није синхронизована. | Класа вектора је синхронизована. |
Легаци цласс | АрраиЛист је стандардна класа колекције. | Вектор је наслеђена класа, ре-пројектована да подржи класу колекције. |
Цласс Децларатион | цласс АрраиЛист | цласс Вецтор |
Реаллоцатион | Када није наведен, АрраиЛист се повећава за половину његове величине. | Када није специфициран, вектор се повећава да би удвостручио његову величину. |
Перформансе | Како је АрраиЛист несинкронизиран, он ради брже него Вецтор. | Како је вектор синхронизован, ради спорије него АрраиЛист. |
Енумератион / Итератор | АрраиЛист користи Итератор интерфејс за прелазак преко објеката који се налазе у АрраиЛист-у. | Вектор користи Енумератион, као и Итератор интерфејс за прелазак кроз објекте који се налазе у Векторима. |
Дефиниција АрраиЛист-а
АрраиЛист припада листи стандардних класа колекције. Класа АрраиЛист је дефинисана унутар јава.утил пакета, проширује АбстрацтЛист класу која је такође стандардна класа колекције, и такође имплементира Листу, интерфејс дефинисан у Колекционим интерфејсима. У Јави, стандардни низ је увек фиксне дужине. То значи једном створено; не динамички расте или се смањује. Дакле, требало би да имате претходно знање о дужини низа који користите. Али, понекад се може десити да се тражена дужина открије током извођења тако да, да би решила ову врсту ситуације, Јава је представила АрраиЛист.
АрраиЛист је класа која се користи за динамичко креирање низа који садржи референце на објекте. Овај низ може порасти у величини онолико колико је потребно. Декларација класе је следећа:
цласс АрраиЛист
Овде, Е специфицира тип објеката које ће поље држати. Створени низ је променљиве дужине и повећава се и смањује у величини када се објекти додају или уклоне са листе.
АрраиЛист није синхронизован, што значи да више од једне нити може радити на низу истовремено. На пример, ако једна нит додаје референцу објекта на низ, а друга нит истовремено уклања референцу објекта из истог низа. Креирање динамичког низа користећи класу АрраиЛист:
АрраиЛист С1 = нови АрраиЛист (); Систем.оут.принтлн ("Почетна величина С1:" + С1.сизе ()); С1.адд ("Т"); С1.адд ("Ц"); С1.адд ("Х"); С1.адд (1, "Е"); Систем.оут.принтлн ("Након додавања С1 садржи:" + С1); Систем.оут.принтлн ("Величина С1 након додавања:" + С1.сизе ()); С1.ремове ("Т"); С1.ремове (2); Систем.оут.принтлн ("Након брисања С1 садржи:" + С1); Систем.оут.принтлн ("Величина С1 након брисања:" + С1.сизе ()); // ОутпутИнитиал сизе оф С1: 0 Након додавања С1 садржи: [Т, Е, Ц, Х]; Величина С1 након додавања: 4 Након брисања С1 садржи: [Е, Х] Величина С1 након брисања: 2
У горњем коду, то можете видети; Направио сам низ објеката типа стринга. Додао сам неке објекте низу С1 користећи адд () метод, а касније избрисао неке објекте помоћу методе ремове (). Можете посматрати ако не наведете почетну величину низа која ће бити од '0' дужине. Као што можете да видите, поље се повећава и смањује када додајете и бришете елементе.
Дефиниција вектора
Вектор је класа Легаци која се реинжењерира да би подржала класу колекције у хијерархији оквира за колекцију. Класа вектора је такође дефинисана у јава.утил пакету, проширена класом АбстрацтЛист и имплементирана са интерфејсом Лист . Класа Вецтор је декларисана као следећа:
цласс Вецтор
Овде, Е дефинише тип објекта који ће бити ускладиштен у низу. Низ креиран помоћу Вецтор класе је променљиве дужине. Повећава двоструку величину ако инкремент није специфициран. Размотримо креирање низа користећи Вецтор.
Вектор В = нови вектор (1, 1); В.аддЕлемент ("Тецх"); В.аддЕлемент ("Разлике"); Систем.оут.принтлн ("Капацитет након 2 додавања:" + В. Капацитет ()); В.аддЕлемент ("Између"); В.аддЕлемент ("Вектори"); Систем.оут.принтлн ("Тренутни капацитет:" + В. капацитет ()); // Излазни капацитет након 2 додавања: 2 Тренутни капацитет: 4
У горе наведеном коду можете видјети да сам посебно споменуо величину и вриједност инкремента у конструктору, респективно, док сам проглашавао низ стринг објеката. Према томе, можете приметити да се граница низа завршава са вредностима које је дала конструктору за време декларације.
Кључне разлике између АрраиЛист-а и Вектора
- Вишеструке нити могу да раде на АрраиЛист-у у исто време, стога се сматра несинхронизованим . За разлику од АрраиЛист-а, само једна нит може радити на вектору у исто вријеме; стога се зове Синхронизовано .
- У раној верзији Јаве, неке класе и интерфејси би обезбедили методе за складиштење објеката које су назвали Легаци класе Вецтор је једна од класа Легаци Јава. Касније, ове наслеђене класе су реинжењериране да подрже класу колекције, док је класа АрраиЛист стандардна класа колекције.
- Када се ограничење поља потпуно искористи и дода се нови објекат поред исцрпљеног низа, његова величина расте у оба случаја, тј. У АрраиЛист-у као иу Вектору, али је разлика у АрраиЛист-у, ако није специфицирана величина повећава се за 50% од тренутног низа, док се у векторском низу удвостручује величина ако вредност инкремента није специфицирана.
- Вектор користи Енумерацију као и Итератор за прелазак низа док АрраиЛист користи само итератор за прелазак низа.
- Пошто је АрраиЛист Унсинцхронизед и многе нити могу да раде на њему у исто време, његове перформансе су боље од вектора на коме само једна нит може да ради у исто време.
Сличности:
- АрраиЛист и Вецтор су дефинисани у јава.утил пакету.
- АрраиЛист и Вецтор проширују класу АбсрацтЛист.
- АрраиЛист и Вецтор оба имплементирају Лист интерфејс.
- И АрраиЛист и Вецторс се користе за креирање динамичког низа који расте по потреби.
- АрраиЛист и Вецтор држе референце објекта.
Закључак:
Закључујем да је употреба АрраиЛист-а боља од употребе вектора јер он ради брже и боље.