ابدأ بالتواصل مع الأشخاص وتبادل معارفك المهنية

أنشئ حسابًا أو سجّل الدخول للانضمام إلى مجتمعك المهني.

متابعة

In Java, what is the difference between ArrayList and Vector ?

user-image
تم إضافة السؤال من قبل Salauddin Mohammad , Sr. Manager, Software Development , Aspen Technology Inc
تاريخ النشر: 2014/08/27
مستخدم محذوف‎
من قبل مستخدم محذوف‎

ArrayList is not synchronized. So suitable for non thread application also it is fast. This is part of collection framework,so we can access collection framework methods. Iterator is fail fast.

Vector is synchronized. So low performance and suitable for thread based application. Enumerator is not fail fast. This is not part of collection framework and contains lots of legacy methods

Alabbas Alhaj Ali
من قبل Alabbas Alhaj Ali , Senior Frontend Developer , Acomodeo

Differences

 

  • Vectors are synchronized, ArrayLists are not.
  • Data Growth Methods

 

Use ArrayLists if there is no specific requirement to use Vectors.

 

Synchronization

 

If multiple threads access an ArrayList concurrently then we must externally synchronize the block of code which modifies the list either structurally or simply modifies an element. Structural modification means addition or deletion of element(s) from the list. Setting the value of an existing element is not a structural modification.

 

Collections.synchronizedList is normally used at the time of creation of the list to avoid any accidental unsynchronized access to the list.

 

 

Data growth

 

Internally, both the ArrayList and Vector hold onto their contents using an Array. When an element is inserted into an ArrayList or a Vector, the object will need to expand its internal array if it runs out of room. A Vector defaults to doubling the size of its array, while the ArrayList increases its array size by50 percent.

Mohd shahnawaz khan
من قبل Mohd shahnawaz khan , Associate Project , Cognizant Technology Solution

Differences are based upon properties like synchronization, thread safety, speed, performance , navigation and Iteration over List etc.

1) Synchronization and thread-safety

First and foremost difference between Vector and ArrayList is that Vector is synchronized and ArrayList is not, what it means is that all the method which structurally modifies Vector e.g. add () or remove () are synchronized which makes it thread-safe and allows it to be used safely in a multi-threaded and concurrent environment. On the other hand ArrayList methods are not synchronized thus not suitable for use in multi-threaded environment. This is also a popular interview question on thread, where people ask why ArrayList can not be shared between multiple threads.

2) Speed and Performance

ArrayList is way faster than Vector. Since Vector is synchronized and thread-safe it pays price of synchronization which makes it little slow. On the other hand ArrayList is not synchronized and fast which makes it obvious choice in a single-threaded access environment. You can also use ArrayList in a multi-threaded environment if multiple threads are only reading values from ArrayList or you can create read only ArrayList as well.

3) Capacity

Whenever Vector crossed the threshold specified it increases itself by value specified in capacityIncrement field while you can increase size of ArrayList by calling ensureCapacity () method.

4) Enumeration and Iterator

Vector can return enumeration of items it hold by calling elements () method which is not fail-fast as opposed to Iterator and ListIterator returned by ArrayList. I have discussed this point in detail on my post What is difference between Iterator and Enumeration, you can also look there.

5) Legacy

 

 

 

 

sadiq Nutankaluva
من قبل sadiq Nutankaluva , Project Engineer , WiproTechnologies

Vector is synchronized where as ArrayList is not.

Shefaa Masadeh
من قبل Shefaa Masadeh , Oracle Developer , Talal Abu Ghazaleh Organization

we use vectors when we need synchronization becuase its synchronized but array list no

المزيد من الأسئلة المماثلة