ArrayList
- ArrayList is implementation of list interface.
- ArrayList is not synchonized(so not thread safe)
- ArrayList is implemented using array as internal data structure.It can be dynamically resized .
LinkedList
- LinkedList is implementation of list and deque interface.
- LinkedList is not synchronized
- LinkedList is implemented using doubly linked list as internal data structure.
ArrayList vs LinkedList:
Parameter
|
ArrayList
|
LinkedList
|
---|---|---|
Internal data structure
|
It uses dynamic array to store elements internally
|
It uses doubly Linked List to store elements internally
|
Manipulation
|
If We need to insert or delete element in ArrayList, it may take O(n), as it internally uses array and we may have to shift elements in case of insertion or deletion
|
If We need to insert or delete element in LinkedList, it will take O(1), as it internally uses doubly LinkedList
|
Search
|
Search is faster in ArrayList as uses array internally which is index based. So here time complexity is O(1)
|
Search is slower in LinkedList as uses doubly Linked List internally So here time complexity is O(n)
|
Interfaces
|
ArrayList implements List interface only, So it can be used as List only
|
LinkedList implements List,Deque interfaces, so it can be used as List,Stack or Queue
|
When to use ArrayList or LinkedList?
It actually depends on our need.
- If we have more insertion or deletion then we should use LinkedList.
- If we have less insertion or deletion and more search operations then we should use ArrayList.
Please go through core java interview questions for more interview questions.