एक कारण यह है कि प्रथम वर्ष के प्रोग्रामिंग क्लासेस सरणियों का उपयोग करते हैं: यह इस प्रकार है कि प्राध्यापकों ने मूल रूप से इसे सीखा इससे पहले कि हमने डायनेमिक सूचियों के साथ मानक पुस्तकालयों का उपयोग करना शुरू कर दिया है। आदिम डेटा प्रकारों का उपयोग करना भी आम तौर पर लागू होता है: सरणियाँ बहुत अधिक कंप्यूटर में मौजूद हैं। सूर्य के तहत भाषा (और विधानसभा के निर्देश के एक मुट्ठी में लागू किया जा सकता है)। जब मैं पहली बार प्रोग्रामिंग सीख रहा था, एक लिंक्ड सूची को लागू करना असाइनमेंट्स में से एक था।
पहले सिद्धांतों से शुरू करना बहुत आसान है और फिर कहें कि "यह मूल संरचना है। यह भाषा (या इसकी लाइब्रेरी) आपको यह उच्च-स्तरीय डेटा संरचना प्रदान करती है, जो यह सब करती है, लेकिन आपको x, y और z प्रदान करती है," की तुलना में यह कहना है "तो ये उच्च स्तरीय डेटा संरचनाएं हैं, अब यहां क्या हो रहा है।" एक लिंक्डलिस्ट बनाम एक ऐरेलिस्ट (या हैशसेट बनाम एक ट्रीसेट) का उपयोग करने के कारण के बारे में सीखना आमतौर पर एक दूसरे या तीसरे वर्ष के एल्गोरिदम पाठ्यक्रम है। सूचियों और मानचित्रों में समान इंटरफेस होते हैं और समान परिणाम देते हैं, लेकिन किसी भी आकार के आवेदन में नाटकीय रूप से भिन्न व्यवहार हो सकते हैं। और एक बार जब आप प्रोग्रामिंग 101 से बाहर निकल जाते हैं, तो इस बात की कोई गारंटी नहीं है कि प्रोग्रामिंग 102 उसी भाषा का उपयोग करेगा। यदि आप किसी सरणी की अवधारणा से शुरू करते हैं, तो आप बस कह सकते हैं "
एक परिचयात्मक पाठ्यक्रम में "सूची" पर "सरणी" को पसंद करने का एक और कारण यह है कि सरणियों को मौलिक रूप से समझना आसान है: 20 की एक सरणी में bytes
20 बाइट्स लगते हैं (साथ ही सरणी या लंबाई के अंत को इंगित करने के लिए एक युगल, कार्यान्वयन के आधार पर) )।
एक "सूची" मछली की एक पूरी तरह से अलग केतली है और इसे कई अलग-अलग तरीकों से लागू किया जा सकता है (ArrayList, LinkedList, और शायद एक युगल जो मैं भूल गया हूं), मौलिक रूप से अलग प्रदर्शन विशेषताओं के साथ। अलग सूची कक्षाएं क्या कर रहे हैं की हिम्मत को समझने के बिना, आप जब आप का उपयोग करना चाहिए की एक सार्थक चर्चा नहीं हो सकता List foo = new ArrayList()
बनाम List foo = new LinkedList()
। यदि आप छात्र को एक सूची कार्यान्वयन का उपयोग करने की कोशिश करते हैं, तो कोई यह पूछने जा रहा है कि आप अन्य कार्यान्वयन में से एक के बजाय ArrayList का उपयोग क्यों कर रहे हैं। और "ArrayList" में "Array" शब्द शामिल है और एक द्वारा समर्थित है, इसलिए यह वास्तव में "सरणी" से "ArrayList" के लिए एक विशाल तर्क नहीं है।
आम धारणा के विपरीत, ऐसी स्थितियाँ हैं जिनमें सूचियों पर सरणियों का उपयोग करना समझ में आता है, खासकर जब आप स्थिर आकार की सूची के साथ काम कर रहे हों। यहाँ एक जोड़े हैं:
- लुक और यात्रा थोड़ा तेजी से कर रहे हैं क्योंकि आप विधि मंगलाचरण भूमि के ऊपर के साथ काम नहीं कर रहे हैं:
foo[n]
dereferences और कुछ परदे के पीछे गणित सूचक है, जबकि करता है foo.get(n)
भिन्नता है,, एक विधि मंगलाचरण कर एक दूसरे भिन्नता हैं, और तब शायद सूचक अंकगणित करना (यदि आप एक ArrayList का उपयोग कर रहे हैं, LinkedLists संभावित रूप से सूची के प्रत्येक तत्व से पुनरावृत्त होने की आवश्यकता है)।
- प्रारंभ में बहुत क्लीनर है:
int[] foo = new int[]{1, 2, 3, 4, 5}
बनाम एक और StackOverflow प्रश्न में सुझाव