Різниця між ArrayList та вектором на Java

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 1 Травень 2024
Anonim
C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04
Відеоролик: C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04

Зміст


ArrayList і Vector - це класи за ієрархією Framework Framework. ArrayList і Vector обидва використовуються для створення динамічного масиву об'єктів, де масив може збільшуватися в розмірах як і коли потрібно. Існують дві основні відмінності, які відрізняють ArrayList і Vector, в тому, що Vector належить до класів Legacy, які пізніше були перероблені для підтримки класів колекції, тоді як ArrayList - це стандартний клас колекції. Ще одна важлива відмінність полягає в тому, що ArrayList не синхронізується з іншого боку; Вектор синхронізований.

Вивчимо деякі інші відмінності за допомогою порівняльної діаграми, показаної нижче.

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Схожість
  5. Висновок

Порівняльна діаграма

Основа для порівнянняArrayListВектор
ОсновніКлас ArrayList не синхронізований.Вектор-клас синхронізований.
Клас спадщиниArrayList - це стандартний клас колекції.Vector - це спадковий клас, перероблений для підтримки колекційного класу.
Декларація класуклас ArrayListвекторний клас
ПерерозподілЯкщо не вказано, ArrayList збільшується на половину його розміру.Якщо не вказано, вектор збільшується, щоб подвоїти його розмір.
ПродуктивністьОскільки ArrayList не синхронізований, він працює швидше, ніж вектор.Оскільки вектор синхронізується, він працює повільніше, ніж ArrayList.
Перерахування / ІтераторArrayList використовує інтерфейс Iterator для переміщення по об'єктах, що зберігаються в ArrayList.Вектор використовує перерахування, а також інтерфейс ітератора для переміщення по об'єктах, що зберігаються у векторах.


Визначення ArrayList

ArrayList належить до списку стандартних класів колекції. Клас ArrayList визначений всередині java.util пакет, він поширює AbstractList клас, який також є стандартним колекційним класом, і він також реалізується Список, інтерфейс, визначений в інтерфейсах колекції. У Java стандартний масив завжди має фіксовану довжину. Це означає, що колись створений; вона динамічно не збільшується і не зменшується в розмірах. Отже, ви повинні мати попередні знання про довжину масиву, який ви використовуєте. Але, іноді може статися так, що потрібна довжина виявляється під час виконання, щоб вирішити подібну ситуацію Java, представлена ​​ArrayList.

ArrayList - клас, який використовується для динамічного створення масиву, який містить посилання на об'єкти. Цей масив може збільшуватися в розмірі як і коли потрібно. Декларація класу така:

клас ArrayList

Тут E вказує тип об'єктів, який буде містити масив. Створений масив має змінну довжину, і він збільшується та зменшується в розмірі, коли об’єкти додаються або видаляються зі списку.


ArrayList не синхронізований, це означає, що над масивом може працювати одночасно більше одного потоку. Наприклад, якщо один потік додає до масиву посилання на об'єкт, а інший потік одночасно видаляє посилання на об'єкт з того ж масиву. Створення динамічного масиву за допомогою класу ArrayList:

ArrayList S1 = новий ArrayList(); System.out.ln ("Початковий розмір S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("Н"); S1.add (1, "E"); System.out.ln ("Після додавання S1 містить:" + S1); System.out.ln ("Розмір S1 після додавання:" + S1.size ()); S1.remove ("T"); S1.remove (2); System.out.ln ("Після видалення S1 містить:" + S1); System.out.ln ("Розмір S1 після видалення:" + S1.size ()); // Вихідний початковий розмір S1: 0 Після додавання S1 містить:; Розмір S1 після додавання: 4 Після видалення S1 містить: Розмір S1 після видалення: 2

У наведеному вище коді ви можете це бачити; Я створив масив об’єктів рядкового типу. Я додав деякі об’єкти до масиву S1 за допомогою методу add (), а пізніше видалив деякі об'єкти, використовуючи метод delete (). Ви можете спостерігати, якщо не вказати початковий розмір масиву, він буде довжиною '0'. Як ви бачите, масив збільшується і зменшується в розмірі, додаючи і видаляючи елементи.

Визначення вектора

Vector - це клас Legacy, який перероблений для підтримки класу колекції в ієрархії Framework Framework. Векторний клас також визначається в java.util пакет, подовжений на AbstractList класу та реалізовано Список інтерфейс. Клас Vector оголошено таким:

векторний клас

Тут E визначає тип об'єкта, який буде зберігатися в масиві. Масив, створений за допомогою класу Vector, має різну довжину. Він збільшується вдвічі більше, якщо приріст не вказаний. Давайте розберемося зі створенням масиву за допомогою Vector.

Вектор V = новий вектор(1,1); V.addElement ("Технологія"); V.addElement ("Відмінності"); System.out.ln ("Ємність після 2 додавання:" + V.capacity ()); V.addElement ("Між"); V.addElement ("Вектори"); System.out.ln ("Поточна потужність:" + V.capacity ()); // Вихідна ємність після 2 додавання: 2 Потужність струму: 4

У наведеному вище коді ви бачите, що я особливо згадував значення розміру та приросту в конструкторі Vector відповідно, декларуючи масив рядкових об'єктів. Отже, ви можете помітити, що по мірі завершення межі масиву він збільшується на значення, надане конструктору під час декларування.

  1. На ArrayList одночасно можуть працювати декілька потоків, отже, це вважається несинхронізований. На відміну від ArrayList, один вектор може одночасно працювати над вектором; звідси і називається Синхронізовано.
  2. У першій версії Java деякі класи та інтерфейси забезпечували б методи зберігання об'єктів, які вони називали Legacy class Vector - один із класів Legacy Java. Пізніше ці старі класи були реінжиніровані для підтримки класу Collection, тоді як клас ArrayList є стандартним колекційним класом.
  3. Коли ліміт масиву використовується повністю і додається новий об’єкт поруч із вичерпаним масивом, його розмір збільшується в обох випадках, тобто в ArrayList, а також у Vector, але різниця полягає в тому, що в ArrayList, якщо не вказано розмір збільшується на 50% від поточного масиву, тоді як у векторному масиві збільшується вдвічі, якщо значення приросту не вказано.
  4. Вектор використовує «Перерахування», а також «Ітератор» для просування масиву, тоді як ArrayList використовує ітератор лише для переходу масиву.
  5. Оскільки ArrayList несинхронізований і багато потоків можуть працювати над ним одночасно, його ефективність краща, ніж вектор, на якому одночасно може працювати лише одна нитка.

Подібність:

  1. І ArrayList і Vector визначені в пакеті java.util.
  2. І ArrayList і Vector розширюють клас AbsractList.
  3. ArrayList та Vector реалізують інтерфейс списку.
  4. І ArrayList, і Vectors використовуються для створення динамічного масиву, який зростає у міру необхідності.
  5. ArrayList і Vector містять посилання на об'єкти.

Висновок:

На завершення кажу, що використання ArrayList краще, ніж використання Vector, оскільки воно працює швидше і краще.