ArrayList Vs LinkedList Vs Vector
ย
๐ Overview Table:
Feature | ArrayList | LinkedList | Vector |
---|---|---|---|
Order | Maintains insertion order | Maintains insertion order | Maintains insertion order |
Duplicates | Allowed | Allowed | Allowed |
Thread-safe | โ No | โ No | โ Yes (synchronized) |
Performance (read) | โ Fast (O(1) for index access) | โ Slower (O(n) traversal) | โ Similar to ArrayList (but slower) |
Performance (add/remove) | โ Slower for middle elements (O(n)) | โ Faster for add/remove at head or tail | โ Slower due to synchronization |
Data structure used | Dynamic Array | Doubly Linked List | Dynamic Array |
Preferred Use | Frequent random access | Frequent insert/delete operations | Legacy code with thread-safety needed |
๐งช Examples:
๐น ArrayList
๐ธ LinkedList
๐น Vector
๐ง When to Use What?
Scenario | Use |
---|---|
Need fast random access | โ
ArrayList
|
Need frequent insert/delete in middle | โ
LinkedList
|
Need thread safety (without external sync) | โ
Vector (or better: Collections.synchronizedList() )
|
๐ Summary:
- Use ArrayList for general-purpose, fast read-heavy operations.
- Use LinkedList when you need many insertions/deletions.
- Use Vector only for legacy code or basic thread-safety needs.