Різниця між Arraylist та Vector

Arraylist vs Vector

Масив може розглядатися як динамічний масив, який може збільшуватися в розмірах. З цієї причини програмісту не потрібно знати розмір масиву, коли він / вона визначає його. Вектор також можна розглядати як масив, який може збільшуватися в розмірах. Вектори можна легко розподілити і до них можна скористатися, коли потрібний розмір сховища не відомий до часу виконання.

Що таке Arraylist?

Масив може розглядатися як динамічний масив, який може збільшуватися в розмірах. Таким чином, масиви arraylists ідеально підходять для використання в ситуації, коли ви не знаєте розмір елементів, необхідних на момент декларування. У Java масиви архітектури можуть містити лише об'єкти, вони не можуть містити примітивні типи безпосередньо (ви можете помістити примітивні типи всередині об'єкта або використовувати класи обгортки примітивних типів). Як правило, арлайстисти мають методи для вставки, видалення та пошуку. Часова складність доступу до елемента - o (1), тоді як вставка та вилучення має часову складність o (n). На Java можна пересувати масиви масивів за допомогою циклів foreach, ітераторів або просто за допомогою індексів. В Java представники архівів були представлені з версії 1.2, і вона є частиною Java Collections Framework.

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

Вектор - це також масив, який може збільшуватися в розмірах. Вектори можна легко розподілити і їх можна використовувати, коли потрібний розмір сховища не відомий до часу виконання. Вектори також можуть утримувати лише об'єкти і не можуть містити примітивні типи. Вектори синхронізовані, тому їх можна безпечно використовувати в багатопотокових середовищах. Векторам надаються методи додавання об'єктів, видалення об'єктів та пошуку об’єктів. Подібно до масиву в java, вектори можна пройти за допомогою циклів foreach, ітераторів або просто за допомогою індексів. Що стосується Java, вектори були включені ще з першої версії Java.

Чим відрізняється Arraylist від Vector?

Незважаючи на те, що як масиви, так і вектори дуже схожі на динамічні масиви, які можуть збільшуватися в розмірах, вони мають деякі важливі відмінності. Основна відмінність арраїлістів від векторів полягає в тому, що вектори синхронізовані, тоді як масиви несинхронізовані. Тому використання масивів у багатопотокових середовищах не буде придатним, тоді як вектори можна безпечно використовувати в багатопотокових середовищах (оскільки вони є безпечними для потоків). Але синхронізація у векторах може спричинити зниження продуктивності. Тому було б не дуже корисно використовувати вектори в одному потоковому середовищі. Внутрішньо, як масиви, так і вектори використовують масиви для утримання об'єктів. Коли поточного простору недостатньо, вектори вдвічі збільшать розмір свого внутрішнього масиву, тоді як масиви збільшать розмір його внутрішнього масиву на 50%. Але при використанні як масивів, так і векторів, надавши відповідну початкову ємність, можна уникнути зайвого зміни внутрішнього масиву. У ситуації, коли відомо швидкість росту даних, використання векторів було б більш підходящим, оскільки можна було б визначити додаткове значення векторів.