ArrayList vs LinkedList
दो तरह की List
ArrayList और LinkedList दोनों Lists हैं — क्रमित collections जो duplicates allow करती हैं — पर ये data अलग तरह store करती हैं। यह उनकी speed को प्रभावित करता है: ArrayList index से access को तेज़, जबकि LinkedList बीच में insert या remove को तेज़।
ArrayList
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list.get(0)); // तेज़ index access
ArrayList items को resizable array में store करती है। index से item लेना (get(0)) बहुत तेज़ है। यह ज़्यादातर रोज़ की ज़रूरतों को default List है।
LinkedList
import java.util.LinkedList;
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.addFirst("Start"); // सामने तेज़ add
System.out.println(list);
LinkedList items को जुड़े nodes के रूप में store करती है। शुरू या बीच में जोड़ना/हटाना तेज़ है क्योंकि कोई elements shift नहीं करने पड़ते। इसमें addFirst जैसी सुविधाजनक methods भी हैं।
ये data कैसे store करती हैं
- ArrayList — एक निरंतर array; हर item एक numbered slot पर बैठता है।
- LinkedList — अलग nodes, हर एक value साथ में अगले node का link रखता है।
यह अंदरूनी अंतर उनकी अलग ताक़तों का कारण है।
Speed के अंतर
- Index से access: ArrayList तेज़ (सीधे वहाँ कूदती है); LinkedList धीमी (node-दर-node चलती है)।
- बीच में insert/remove: LinkedList तेज़ (बस relink); ArrayList धीमी (elements shift)।
- Memory: ArrayList हल्की; LinkedList अतिरिक्त links store करती है।
तुलना
| बात | ArrayList | LinkedList |
|---|---|---|
| Store as | Array | Linked nodes |
| Index से access | तेज़ | धीमी |
| बीच में insert/remove | धीमी | तेज़ |
| Memory | कम | ज़्यादा |
| किसके लिए | पढ़ना/access | बार-बार insert/remove |
आम गलतियाँ
- LinkedList को default इस्तेमाल करना। ज़्यादातर मामलों को ArrayList तेज़ और हल्की है।
- LinkedList पर random access। loop में
get(i)धीमा है — बचिए। - जो operation सबसे ज़्यादा करें उसे अनदेखा करना। access बनाम insert/remove के आधार पर चुनिए।
- यह भूलना दोनों Lists हैं। वे List methods साझा करती हैं, तो बदलना आसान है।
सारांश
- दोनों Lists हैं; अंतर है वे data कैसे store करती हैं।
- ArrayList array इस्तेमाल करती है — तेज़ access, कम memory।
- LinkedList nodes इस्तेमाल करती है — बीच में तेज़ insert/remove।
- Default ArrayList; बार-बार बीच बदलाव को LinkedList इस्तेमाल कीजिए।
- LinkedList पर loop में index access से बचिए।
आगे, बड़ी तस्वीर दोहराइए Collections Framework में, या maps तुलना कीजिए HashMap vs Hashtable में।
