Vector and ArrayList are dynamic array implementations in Java used to store elements that can grow or shrink in size. Both are part of the java.util package and provide indexed access to elements.
- Both allow duplicate elements and maintain insertion order.
- Both provide fast index-based access to elements.
- They differ mainly in performance and thread-safety behavior.
ArrayList
ArrayList is a resizable array implementation of the List interface that allows dynamic storage of elements. It is widely used because it provides fast random access and flexible size management.
- Maintains insertion order of elements.
- Not synchronized, so it is not thread-safe.
- Grows dynamically when elements are added.
Syntax:
List<DataType> listName = new ArrayList<>();
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
// Creating an ArrayList
ArrayList<String> names = new ArrayList<>();
// Adding elements
names.add("Ravi");
names.add("Aman");
names.add("Neha");
names.add("Priya");
// Displaying ArrayList
System.out.println("Names: " + names);
// Accessing element using index
System.out.println("Element at index 2: " + names.get(2));
// Removing an element
names.remove("Aman");
// Updated ArrayList
System.out.println("After removal: " + names);
// Size of ArrayList
System.out.println("Total Elements: " + names.size());
}
}
Output
Names: [Ravi, Aman, Neha, Priya] Element at index 2: Neha After removal: [Ravi, Neha, Priya] Total Elements: 3
Vector
Vector is a dynamic array implementation in Java that grows automatically when elements are added. It is similar to ArrayList but it is synchronized and thread-safe.
- Vector is a legacy class introduced in Java 1.0 before the Collection Framework.
- Maintains insertion order of elements.
- Slower than ArrayList due to synchronization overhead..
Syntax:
Vector<DataType> vectorName = new Vector<>();
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
// Creating a Vector
Vector<String> names = new Vector<>();
// Adding elements
names.add("Ravi");
names.add("Aman");
names.add("Neha");
names.add("Priya");
// Displaying Vector
System.out.println("Names: " + names);
// Accessing element using index
System.out.println("Element at index 1: " + names.get(1));
// Removing an element
names.remove("Aman");
// Updated Vector
System.out.println("After removal: " + names);
// Size of Vector
System.out.println("Total Elements: " + names.size());
}
}
Output
Names: [Ravi, Aman, Neha, Priya] Element at index 1: Aman After removal: [Ravi, Neha, Priya] Total Elements: 3
ArrayList vs Vector
| Feature | ArrayList | Vector |
|---|---|---|
| Introduction | Introduced in Java 1.2 (Collection Framework) | Legacy class (Java 1.0) |
| Package | java.util | java.util |
| Synchronization | Not synchronized | Synchronized (thread-safe) |
| Performance | Faster (no synchronization overhead) | Slower due to synchronization |
| Growth Mechanism | Increases size by 50% when full | Doubles size when full (by default) |
| Thread Safety | Not thread-safe | Thread-safe |
| Preferred Use | Single-threaded applications | Multi-threaded applications (rarely used today) |
| Traversal | Iterator | Iterator + Enumeration (legacy support) |