Препоръчано, 2024

Избор На Редактора

Разлика между ArrayList и Vector в Java

ArrayList и Vector са класовете в йерархията на рамката за събиране. ArrayList и Vector, и двете се използват за създаване на динамичен масив от обекти, където масивът може да расте по размер и когато е необходимо. Има две основни разлики, които разграничават ArrayList и Vector е, че Vector принадлежи на Legacy класове, които по-късно са реинженерирани, за да поддържат класовете на колекция, докато ArrayList е стандартен клас на събиране. Друга важна разлика е, че ArrayList е несинхронизиран от друга страна; Векторът е синхронизиран.

Нека проучим някои други разлики с помощта на таблицата за сравнение, показана по-долу.

Сравнителна таблица

Основа за сравнениеArrayListвектор
ОсновенКласът ArrayList не е синхронизиран.Векторният клас се синхронизира.
Клас на наследствотоArrayList е стандартен клас колекция.Векторът е наследен клас, реконструиран да поддържа клас на събиране.
Декларация за класклас ArrayListклас Vector
ПреразпределениеКогато не е зададен, ArrayList се увеличава наполовина.Когато не е посочен, векторът се увеличава, за да се удвои неговия размер.
производителностТъй като ArrayList е несинхронизиран, той работи по-бързо от вектор.Когато векторът е синхронизиран, той работи по-бавно, отколкото ArrayList.
Преброяване / ИтераторътArrayList използва интерфейса Iterator, за да премине през обектите, съхранени в ArrayList.Вектор използва изброяване, както и интерфейс Iterator, за да премине предмети, съхранени във вектори.

Определение на ArrayList

ArrayList принадлежи към списъка на стандартните класове за събиране. Класът ArrayList се дефинира в пакета java.util, той разширява клас AbstractList, който също е стандартен клас колекция, и също изпълнява List, интерфейс, дефиниран в Collection Interfaces. В Java стандартният масив е винаги с фиксирана дължина. Това означава, че веднъж създаден; тя не се развива динамично или се свива по размер. Така че трябва да имате предварителните познания за дължината на масива, който използвате. Но понякога може да се случи, че необходимата дължина се разкрива по време на изпълнение, така че, за да се справи с този вид ситуация, Java въведе ArrayList.

ArrayList е клас, използван за динамично създаване на масив, който съдържа препратки към обектите. Този масив може да се увеличи в размер както и когато е необходимо. Декларацията за клас е следната:

 клас ArrayList 

Тук E задава вида обекти, които масивът ще държи. Създаденият масив е с променлива дължина и се увеличава и намалява по размер, когато се добавят или премахват обекти от списъка.

ArrayList не е синхронизиран, което означава, че повече от една нишка могат да работят върху масива едновременно. Например, ако една нишка добавя препратка към обект към масива, а друга нишка премахва едновременно референция на обект от един и същ масив. Създаването на динамичен масив с помощта на класа ArrayList:

 ArrayList S1 = нов ArrayList (); System.out.println ("Начален размер на S1:" + S1.size ()); S1.add ( "Т"); S1.add ( "С"); S1.add ( "Н"); S1.add (1, "Е"); System.out.println ("След добавянето S1 съдържа:" + S1); System.out.println ("Размер на S1 след добавяне:" + S1.size ()); S1.изменете ("Т"); S1.изместете (2); System.out.println ("След изтриването S1 съдържа:" + S1); System.out.println ("Размер на S1 след изтриване:" + S1.size ()); // OutputInitial размер на S1: 0 След добавянето S1 съдържа: [T, E, C, H]; Размер на S1 след добавяне: 4 След изтриването S1 съдържа: [E, H] Размер на S1 след изтриване: 2 

В горния код можете да видите това; Създадох масив от обекти от тип string. Добавих някои обекти към масив S1, използвайки add () метода, а по-късно изтрих някои обекти с метода remove (). Можете да наблюдавате, ако не зададете началния размер на масива, който ще бъде с дължина '0'. Както можете да видите, масивът се увеличава и намалява, като добавяте и изтривате елементите.

Определение на вектор

Vector е Legacy клас, който се реинженерира, за да поддържа клас на събиране в йерархията на Framework Collection. Векторният клас също е дефиниран в java.util пакет, разширен от клас AbstractList и реализиран от интерфейса List . Класът Vector е деклариран както следва:

 клас Vector 

Тук E определя типа на обекта, който ще се съхранява в масив. Масив, създаден с векторния клас, е с променлива дължина. Увеличава се двойния му размер, ако прирастът не е определен. Да разберем създаването на масив, използвайки Vector.

 Вектор V = нов вектор (1, 1); V.addElement ( "Tech"); V.addElement ( "Разлики"); System.out.println ("Капацитет след 2 добавяне:" + V. капацитет ()); V.addElement ( "Между"); V.addElement ( "вектори"); System.out.println ("Текущ капацитет:" + V. капацитет ()); // Изходен капацитет след 2 добавки: 2 Ток: 4 

В горния код можете да видите, че специално споменахме размера и стойността на прираста в конструктора на вектор, докато декларираме масив от низани обекти. Следователно, можете да забележите, че след като границата на масива приключи, тя нараства с стойността, предоставена на конструктора, докато декларира.

Ключови разлики между ArrayList и вектори

  1. Няколко нишки могат да работят на ArrayList едновременно, следователно се счита за несинхронизиран . За разлика от ArrayList, само една нишка може да работи на вектор в даден момент; следователно тя се нарича Синхронизирана .
  2. В една ранна версия на Java някои класове и интерфейси ще осигурят методите за съхраняване на обекти, наречени Legacy classes Vector е един от класа на Legacy на Java. По-късно тези наследени класове бяха реинженерирани, за да поддържат клас Collection, докато класът ArrayList е стандартен клас на колекция.
  3. Когато границата на масив е напълно използвана и се добавя нов обект до изчерпания масив, неговият размер нараства и в двата случая, т.е. в ArrayList, както и във вектор, но разликата е, че в ArrayList, ако не е определен размерът се увеличава с 50% от текущия масив, докато във векторния масив се удвоява по размер, ако стойността на прираста не е зададена.
  4. Vector използва изброяване, както и Iterator, за да премине масив, докато ArrayList използва само iterator за преминаване на масив.
  5. Тъй като ArrayList е Unsynchronized и много нишки могат да работят върху него, в същото време неговата производителност е по-добра от Vector, на която само една нишка може да работи в даден момент.

прилики:

  1. ArrayList и Vector са дефинирани в пакета java.util.
  2. ArrayList и Vector разширяват класа AbsractList.
  3. ArrayList и Vector и реализират интерфейс List.
  4. ArrayList и Vectors се използват за създаване на динамичен масив, който нараства, както се изисква.
  5. ArrayList и Vector държат препратки към обекти.

Заключение:

В заключение казвам, че използването на ArrayList е по-добро от използването на вектор, тъй като той се изпълнява по-бързо и по-добре.

Top