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

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

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

Видео: Разлика между Arraylist и Vector
Видео: ArrayList, LinkedList. Java собеседование 2024, Юли
Anonim

Arraylist срещу Vector

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

Какво е Arraylist?

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

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

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

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

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

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