Interview question
What is the difference between ArrayList and LinkedList? ArrayList और LinkedList में क्या अंतर है?
Answer
| Aspect | ArrayList | LinkedList |
|---|---|---|
| Internal structure | Dynamic array | Doubly linked list |
| Random access (get(i)) | O(1) - fast | O(n) - slow, must traverse |
| Insert/delete at start/middle | O(n) - shifts elements | O(1) once position is found |
| Memory overhead | Lower (contiguous array) | Higher (node pointers) |
List<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.get(0); // O(1) - direct index access
List<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.get(0); // O(n) - traverses from head
// LinkedList implements Deque - efficient at both ends
LinkedList<Integer> deque = new LinkedList<>();
deque.addFirst(1); // O(1)
deque.addLast(2); // O(1)
deque.removeFirst(); // O(1)
// Rule of thumb: ArrayList for frequent random access/reads,
// LinkedList for frequent insertions/deletions at the ends| पहलू | ArrayList | LinkedList |
|---|---|---|
| Internal structure | Dynamic array | Doubly linked list |
| Random access | O(1) - तेज़ | O(n) - धीमा |
| Insert/delete शुरुआत/बीच में | O(n) | O(1) position मिलने पर |
List<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.get(0); // O(1)
List<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.get(0); // O(n)
LinkedList<Integer> deque = new LinkedList<>();
deque.addFirst(1);
deque.addLast(2);
deque.removeFirst();
// नियम: बार-बार read के लिए ArrayList,
// बार-बार insert/delete ends पर के लिए LinkedListWas this answer clear?