ArrayList v/s Vector

In this article, we will discuss difference between ArrayList and Vector classes in detail i.e; ArrayList v/s Vector

ArrayList v/s Vector:

 ArrayList Vector
ArrayList is introduced in the original collection framework in Java 1.2 version Vector is a legacy class including Stack, Dictionary, HashTable & Properties and introduced in Java 1.0 version
ArrayList methods are non-synchronized All legacy collection classes are synchronized, thus Vector is synchronized
(i.e.; all methods of Vector class is synchronized)
As ArrayList is non-synchronized, hence it isn’t thread-safe. So, programmer need to handle thread-safety while working in multi-threaded environment As Vectror is synchronized, hence it is thread-safe. So, no need to worry while working in multi-threaded environment, as only one thread get chance to work at any given time
This is comparatively faster as it is non-synchronized, as threads doesn’t require to obtain lock before operating on ArrayList Performance-wise vector is slower comparing with ArrayList due to synchronization, as threads need to wait for their chance to operate on Vector object
ArrayList increases its size by 50% of current array, when its capacity exceeds Vector increases its size by 100% of current array, when its capacity exceeds
Only Iterator is allowed to iterate item/elements inside ArrayList Both Iterator & Enumeration can be used to iterate item/elements inside Vector
ArrayList can be converted into synchronized ArrayList using static utility methods of  Collections class


No need to do that, as already Vector is synchronized by default

When to use ArrayList ?

  • If performance is the factor while storing element/objects, then ArrayList is apt
  • But definitely extra precautions need to be taken while working with multil-threaded environment
  • Also, check how much extra space is required when List is full; if 50% of original size if required then ArrayList will fits the case perfectly

When to use Vector ?

  • If we aren’t concerned with performance, but element/objects need to be accessed in thread-safe manner, then Vector is good choice
  • But performance will be a big hit, as every thread to need to wait to obtain lock before accessing vector element/objects
  • Here, size increase in 2 times the original size; so if there are more number of items to be added then Vector will fits the bill perfectly




Happy Coding !!
Happy Learning !!

Stack class
Vector class