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

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 1 Може 2024
Anonim
Уроки Java - №41 ArrayList, LinkedList и Vector. В чём разница?
Видео: Уроки Java - №41 ArrayList, LinkedList и Vector. В чём разница?

Съдържание


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

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

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. прилики
  5. заключение

Сравнителна диаграма

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


Дефиниция на 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 ( "Т"); S1.add ( "С"); S1.add ( "Н"); S1.add (1, "Е"); 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 (), а по-късно изтрих някои обекти, използвайки метод remove (). Можете да наблюдавате, ако не посочите първоначалния размер на масива, той ще бъде с дължина '0'. Както можете да видите масивът се увеличава и свива по размер, когато добавяте и изтривате елементите.

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

Vector е клас Legacy, който е реинженериран да поддържа класа на колекция в йерархията на Framework Framework. Векторният клас също е дефиниран в java.util пакет, удължен с AbstractList клас и се прилага от списък интерфейс. Класът Vector се декларира както следва:

клас вектор

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

вектор V = нов вектор(1,1); V.addElement ( "Tech"); 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 класове Vector е един от Legacy класа на Java. По-късно тези наследствени класове бяха реинженерирани, за да поддържат колекционерския клас, докато класът ArrayList е стандартен Collection Class.
  3. Когато лимитът на масив е напълно използван и нов обект е добавен до изчерпания масив, неговият размер нараства както в случаите, т.е. в ArrayList, така и във Vector, но разликата е, че в ArrayList, ако не е посочен размерът се увеличава с 50% от текущия масив, докато във Vector масив се удвоява по размер, ако стойността на прираст не е посочена.
  4. Vector използва Изброяване, както и Iterator, за да премине масив, докато, ArrayList използва само итератор за преминаване на масив.
  5. Тъй като ArrayList е несинхронизиран и много нишки могат да работят върху него едновременно, неговата производителност е по-добра от Vector, върху която може да работи само една нишка наведнъж.

прилики:

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

Заключение:

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