Рекомендуємо, 2024

Вибір Редакції

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

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

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

Діаграма порівняння

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

Визначення ArrayList

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

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

 клас ArrayList 

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

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

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

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

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

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

 клас вектор 

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

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

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

Ключові відмінності між ArrayList і векторами

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

Подібності:

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

Висновок:

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

Top