Java का LinkedList
In this page:
LinkedList<Type> list = new LinkedList<>();
list.add(item);
list.addFirst(item);
list.removeLast();
Introduction to LinkedList
LinkedList एक contiguous array के बजाय nodes की एक doubly-linked chain उपयोग करके List implement करता है, इसलिए हर element को सिर्फ अपने neighbors जानने की ज़रूरत है, एक fixed memory block नहीं।
उदाहरण: Introduction to LinkedList
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>(); // chain of nodes
list.add("a");
list.add("b");
System.out.println(list);
}
}
Login to try C/C++/Java/PHP code in the editor
LinkedList as a Queue / Deque
चूंकि यह Deque भी implement करता है, LinkedList सीधे एक queue (FIFO, offer()/poll() से) या एक stack (LIFO, push()/pop() से) के रूप में उपयोग किया जा सकता है बिना एक अलग data structure की ज़रूरत के।
उदाहरण: LinkedList as a Queue / Deque
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<Integer> queue = new LinkedList<>();
queue.offer(1); // FIFO
queue.offer(2);
System.out.println(queue.poll());
LinkedList<Integer> stack = new LinkedList<>();
stack.push(1); // LIFO
stack.push(2);
System.out.println(stack.pop());
}
}
Login to try C/C++/Java/PHP code in the editor
Inserting and Removing Nodes
एक बार आपके पास उस position का reference हो, एक node insert या remove करना तेज़ है (O(1)), क्योंकि यह सिर्फ neighboring pointers relink करने की बात है — दूसरे elements shift करने की ज़रूरत नहीं।
उदाहरण: Inserting and Removing Nodes
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("a");
list.add("c");
list.add(1, "b"); // fast insert once at that position
System.out.println(list);
}
}
Login to try C/C++/Java/PHP code in the editor
Iterating over LinkedList
एक LinkedList को iterate करना syntactically एक ArrayList जैसा ही काम करता है (for-each या Iterator), लेकिन index से random access धीमा है (O(n)) क्योंकि list को एक दिए position तक पहुंचने के लिए एक end से node-by-node चलना पड़ता है।
उदाहरण: Iterating over LinkedList
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("a");
list.add("b");
for (String item : list) { // same syntax as ArrayList
System.out.println(item);
}
}
}
Login to try C/C++/Java/PHP code in the editor
ArrayList vs LinkedList
ArrayList चुनें जब आप ज़्यादातर index से पढ़ें; LinkedList चुनें जब आप ज़्यादातर ends पर या बीच में एक iterator के ज़रिए insert/remove करें — अपने access pattern के लिए गलत चुनना performance को काफी नुकसान पहुंचा सकता है।
उदाहरण: ArrayList vs LinkedList
import java.util.ArrayList;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>(); // best for index reads
LinkedList<Integer> linkedList = new LinkedList<>(); // best for insert/remove at ends
arrayList.add(1);
linkedList.addFirst(1);
System.out.println(arrayList.get(0));
System.out.println(linkedList.getFirst());
}
}
Login to try C/C++/Java/PHP code in the editor
- एक
LinkedListपर एक loop मेंget(index)उपयोग करना, जो हर बार धीमा है (O(n))। - Random access के लिए
LinkedListउपयोग करना, जबArrayListबेहतर है। - एक empty list पर
removeFirst()call करना, जोNoSuchElementExceptionthrow करता है।
Chapter Quiz — Complete all 17 topics to unlock
0/17 topics done
Complete these topics first:
- Java Data Structures
- Java Collections Introduction
- Java List Interface
- Java ArrayList
- Java LinkedList
- Java Map Interface
- Java HashMap
- Java Set Interface
- Java TreeMap
- Java LinkedHashMap
- Java HashSet
- Java TreeSet
- Java LinkedHashSet
- Java Stack & Queue
- Java Iterator
- Java Collections Class
- Java List Sorting