Arraylist vs Vector
Масивът може да се разглежда като динамичен масив, който може да нарасне в размер. Поради тази причина, програмистът не трябва да знае размера на arraylist, когато той / тя го определя. Vector също може да се разглежда като масив, който може да нарасне в размер. Векторите могат лесно да бъдат разпределени и могат да се използват, когато необходимия размер на съхранението не е известен до изпълнение.
Какво е Arraylist?
Масивът може да се разглежда като динамичен масив, който може да нарасне в размер. Следователно, масивите от масиви са идеални за използване в ситуация, в която не знаете размера на елементите, необходими в момента на деклариране. В Java масивите могат да държат само обекти, те не могат да държат директно примитивни типове (можете да поставите примитивните типове вътре в обект или да използвате класовете за обвиване на примитивните типове). Обикновено архелистите са снабдени с методи за извършване на вмъкване, изтриване и търсене. Времевата сложност за достъп до елемент е o (1), докато вмъкването и изтриването има сложност във времето o (n). В Java, масивите могат да бъдат преместени с помощта на предни цикли, итератори или просто с помощта на индекси. В Java масивите бяха представени от версия 1.2 и тя е част от Java Collections Framework.
Какво е вектор?
Vector също е масив, който може да нарасне в размер. Векторите могат лесно да бъдат разпределени и могат да се използват, когато необходимия размер на съхранението не е известен до изпълнение. Векторите също могат да държат само обекти и не могат да държат примитивни типове. Векторите са синхронизирани, поради което могат да се използват безопасно в многопоточна среда. Векторите са снабдени с методи за добавяне на обекти, изтриване на обекти и търсене на обекти. Подобно на arraylist в Java, векторите могат да бъдат преместени с помощта на предни контури, итератори или просто с помощта на индексите. Що се отнася до Java, векторите са включени още от първата версия на Java.
Каква е разликата между Arraylist и Vector?
Въпреки че и масивите, и векторите са много подобни на динамични масиви, които могат да нарастват в размер, те имат някои важни разлики. Основната разлика между arraylists и vectors е, че векторите са синхронизирани, докато arraylists са несинхронизирани. Следователно използването на масиви в многопоточна среда няма да е подходящо, докато векторите могат да се използват безопасно в многопоточна среда (тъй като те са безопасни за конци). Но синхронизацията във векторите би довела до намаляване на производителността. Следователно не би било добра идея да се използват вектори в една среда с резба. Вътре, и масиви, и вектори използват масиви, за да държат обекти. Когато текущото пространство не е достатъчно, векторите ще удвоят размера на вътрешния си масив, докато масивите увеличават размера на вътрешния си масив с 50%. Но при използване както на масиви, така и на вектори, като се даде подходящ първоначален капацитет, може да се избегне ненужно преоразмеряване на вътрешния масив. В ситуация, в която степента на растеж на данните е известна, използването на вектори би било по-подходящо, тъй като инкременталната стойност на векторите може да бъде определена.