Разлика између АрраиЛиста и Вектора у Јави

Аутор: Laura McKinney
Датум Стварања: 1 Април 2021
Ажурирати Датум: 1 Може 2024
Anonim
More than Coffee. Ламповый стрим джавистов. Говорим о наболевшем и не только. Отвечаем на вопросы.
Видео: More than Coffee. Ламповый стрим джавистов. Говорим о наболевшем и не только. Отвечаем на вопросы.

Садржај


АрраиЛист и Вецтор су класе под хијерархијом Цоллецтион Фрамеворк. АрраиЛист и Вецтор, обоје се користе за креирање динамичког низа објеката где арраи може да расте у величини кад и када је потребно. Постоје две основне разлике које разликују АрраиЛист и Вецтор у томе што Вецтор припада Легаци класама које су касније преуређене у подршку за колекционарске класе, док је АрраиЛист стандардна колекционарска класа. Друга битна разлика је та што АрраиЛист с друге стране није синхронизован; Вектор је синхронизован.

Проучимо неке друге разлике уз помоћ упоредног графикона приказаног доле.

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Сличности
  5. Закључак

Упоредни графикон

Основе за упоређивањеНиз листаВектор
ОсновниКласа АрраиЛист није Синхронизована.Векторска класа је синхронизована.
Легаци цлассАрраиЛист је стандардна колекционарска класа.Вецтор је заостављена класа, редизајнирана да подржи колекциону класу.
Декларација класекласа АрраиЛиствектор класе
ПреусмеравањеАко није наведено, АрраиЛист се увећава за половину његове величине.Када није одређено, вектор се повећава да удвостручи своју величину.
ПерформансеКако је АрраиЛист несинхронизован, ради брже од Вецтор-а.Како се Вецтор синхронизује, он ради спорије од АрраиЛиста.
Пописивање / ИтераторАрраиЛист користи Итератор интерфејс да пређе објекте смештене у АрраиЛист.Вектор користи набрајање као и интерфејс Итератора за помицање објеката похрањених у Векторима.


Дефиниција АрраиЛист-а

АрраиЛист припада листи стандардних класа колекције. Класа АрраиЛист је дефинисана унутар јава.утил пакет, проширује АбстрацтЛист класе која је такође стандардна класа колекције, а такође је имплементира Листа, интерфејс дефиниран у Цоллецтион Интерфацес. У Јави је стандардни низ увек фиксне дужине. То значи једном створено; не повећава се динамички или смањује. Дакле, требали бисте имати претходно знање о дужини низа који користите. Али, понекад се може догодити да се тражена дужина открива за време извођења, тако да се за бављење оваквом ситуацијом јава увела АрраиЛист.

АрраиЛист је класа која се користи за динамичко стварање низа који садржи референце на објекте. Овај низ би могао порасти у величини и кад је потребно. Декларација класе је следећа:

класа АрраиЛист

Овде Е одређује врсту објеката које ће матрица држати. Направљени низ је променљиве дужине и повећава се и смањује у величини када се објекти додају или уклоне са листе.


АрраиЛист није синхронизован што значи да више поља може радити на пољу истовремено. На примјер, ако једна нит додаје референцу објекта низу, а друга нит истовремено уклања референцу објекта из исте матрице. Стварање динамичког низа помоћу класе АрраиЛист:

Низ листа С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

У горњем коду то можете видети, посебно сам поменуо вредност величине и прираста у конструктору Вецтора, истовремено изјављујући низ стринг-објеката. Дакле, можете приметити да се, како граница матрице завршава, повећава вредност која је дата конструктору током декларације.

  1. На АрраиЛисту може истовремено радити више нити одакле се и сада сматра несинхронизовано. За разлику од АрраиЛист-а, само један нит може радити на вектору истовремено; отуда се и зове Синхронизовано.
  2. У раној верзији Јаве неке класе и интерфејси пружали би методе за чување објеката који су се називали Легаци класе Вецтор је један од Легаци класе Јаве. Касније су ове наслијеђене класе преуређене у подршку за колекционарску класу, док је класа АрраиЛист стандардна колекционарска класа.
  3. Када се граница матрице потпуно искористи и дода нови објект поред исцрпљеног низа, његова величина расте у оба случаја, тј. У АрраиЛисту и у Вецтору, али разлика је у АрраиЛисту, ако није наведена величина повећава се за 50% тренутне матрице, док се у Векторском пољу удвостручује ако вредност прираста није наведена.
  4. Вецтор користи Енумератион као и Итератор за кретање кроз низ, док АрраиЛист користи итератор само за пролазак кроз низ.
  5. Пошто је АрраиЛист несинхронизован и на њему могу радити многе нити истовремено, његове перформансе су боље од Вецтор-а на којем може радити само једна нит.

Сличности:

  1. Оба АрраиЛист и Вецтор су дефинирана у пакету јава.утил.
  2. АрраиЛист и Вецтор проширују класу АбсрацтЛист.
  3. АрраиЛист и Вецтор оба реализују сучеље листе.
  4. И АрраиЛист и Вецторс користе се за креирање динамичке матрице која расте по потреби.
  5. АрраиЛист и Вецтор садрже референце на објекте.

Закључак:

Закључујем тврдњом да је употреба АрраиЛист-а боља од употребе Вецтор-а јер он брже и боље делује.