Разлика между Arraylist и Vector

Разлика между Arraylist и Vector
Разлика между Arraylist и Vector

Видео: Разлика между Arraylist и Vector

Видео: Разлика между Arraylist и Vector
Видео: vector | Библиотека стандартных шаблонов (stl) | Уроки | C+ | #1 2024, Ноември
Anonim

Arraylist срещу Vector

Арралистът може да се разглежда като динамичен масив, който може да нарасне по размер. Поради тази причина програмистът не трябва да знае размера на списъка с паралели, когато той / тя го дефинира. Vector може да се разглежда и като масив, който може да нарасне по размер. Векторите могат лесно да бъдат разпределени и могат да бъдат използвани, когато необходимият размер на хранилището не е известен до времето на изпълнение.

Какво е Arraylist?

Арралистът може да се разглежда като динамичен масив, който може да нарасне по размер. Следователно списъците с идеи са идеални за използване в ситуация, в която не знаете размера на елементите, необходими по време на декларацията. В Java паралелите могат да съдържат само обекти, те не могат да държат директно примитивни типове (можете да поставите примитивните типове вътре в обект или да използвате класовете обвивки на примитивните типове). Обикновено списъците с паралели са снабдени с методи за извършване на вмъкване, изтриване и търсене. Сложността във времето за достъп до елемент е o (1), докато вмъкването и изтриването има времева сложност o (n). В Java списъците с аргументи могат да бъдат обхождани с помощта на foreach цикли, итератори или просто с помощта на индексите. В Java, списъците с паралели са въведени от версия 1.2 и тя е част от рамката на Java Collections.

Какво е вектор?

Vector също е масив, който може да нарасне по размер. Векторите могат лесно да бъдат разпределени и могат да се използват, когато необходимият размер на хранилището не е известен до времето на изпълнение. Векторите също могат да държат само обекти и не могат да съдържат примитивни типове. Векторите са синхронизирани, следователно могат да се използват безопасно в многонишкови среди. Векторите са снабдени с методи за добавяне на обекти, изтриване на обекти и обекти за търсене. Подобно на arraylist в java, векторите могат да бъдат обхождани с помощта на foreach цикли, итератори или просто с помощта на индексите. Що се отнася до Java, векторите са включени от първата версия на Java.

Каква е разликата между Arraylist и Vector?

Въпреки че и паралелите, и векторите са много подобни на динамичните масиви, които могат да растат по размер, те имат някои важни разлики. Основната разлика между паралелите и векторите е, че векторите са синхронизирани, докато паралелите са несинхронизирани. Следователно използването на списъци с паралели в многонишкови среди няма да е подходящо, докато векторите могат да се използват безопасно в многонишкови среди (тъй като те са безопасни за нишки). Но синхронизирането във вектори би довело до намаляване на производителността. Следователно не би било добра идея да се използват вектори в среда с една резба. Вътрешно, както паралелите, така и векторите използват масиви за задържане на обекти. Когато текущото пространство не е достатъчно, векторите ще удвоят размера на вътрешния му масив, докато списъците с паралели увеличават размера на вътрешния му масив с 50%. Но когато се използват както паралелите, така и векторите, като се даде подходящ първоначален капацитет, може да се избегне ненужно преоразмеряване на вътрешния масив. В ситуация, в която скоростта на растеж на данните е известна, използването на вектори би било по-подходящо, тъй като може да се определи нарастващата стойност на векторите.

Препоръчано: