2013-02-15 61 views
109

मैं हाल ही में कार्यालय में अपने एंड्रॉइड प्रोजेक्ट में ऐरेलिस्ट का उपयोग कर रहा हूं और मैं सूची और ऐरेलिस्ट के बीच थोड़ा उलझन में हूं, दोनों का क्या अंतर है और मुझे क्या उपयोग करना चाहिए?सूची और ऐरेलिस्ट के बीच क्या अंतर है?

इसके अलावा मैंने इसके कुछ कार्यान्वयन भी देखा।

List<SomeObject> myList = new ArrayList<SomeObject>(); 

ArrayList<SomeObject> myList = new ArrayList<SomeObject>(); 

उन दो उदाहरणों का अंतर क्या है?

+6

[जावा में टाइप सूची बनाम प्रकार ऐरेलिस्ट] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/2279030/type-list-vs-type-arraylist-in-java), [जावा सूची बनाम ऐरेलिस्ट] (http://stackoverflow.com/questions/9309093/java-list-vs-arraylist), और [सूची बनाम ऐरेलिस्ट] (http://stackoverflow.com/questions/7726361/list-vs-arraylist); भी, [सूची बनाम। ArrayList] (http://www.coderanch.com/t/379305/java/java/List-ArrayList), और [बहुत कुछ] (https://www.google.com/search?hl=hi&q=java+ सूची + बनाम + ArrayList)! – Eric

+3

http://stackoverflow.com/questions/6867484/what-is-a-list-vs-an-arraylist?rq=1 –

+3

एक इंटरफेस है, और दूसरा एक वर्ग है। अब आप इसे अपने आप खोज सकते हैं। –

उत्तर

130

आपके दोनों उदाहरणों में सूची कार्यान्वयन के बीच कोई अंतर नहीं है। हालांकि इस तरह से एक अंतर है कि आप अपने कोड में परिवर्तनीय myList का उपयोग कर सकते हैं।

आप अपनी सूची के रूप में जब निर्धारित किए हैं:

List myList = new ArrayList(); 

आप केवल तरीकों और संदर्भ सदस्यों को बताया कि सूची इंटरफ़ेस में परिभाषित कर रहे हैं कह सकते हैं। आप के रूप में यह निर्धारित करते हैं:

ArrayList myList = new ArrayList(); 

आप ArrayList विशेष विधियां प्रारंभ और उन जिसका परिभाषाओं सूची से लिए गए हैं के अलावा ArrayList विशिष्ट सदस्यों का उपयोग करने में सक्षम हो जाएगा।

फिर भी, जब आप पहले उदाहरण में सूची इंटरफ़ेस की विधि को कॉल करते हैं, जिसे ऐरेलिस्ट में कार्यान्वित किया गया था, तो ऐरेलिस्ट से विधि को कॉल किया जाएगा (क्योंकि सूची इंटरफ़ेस किसी भी तरीके को लागू नहीं करता है)।

इसे पॉलिमॉर्फिज्म कहा जाता है। आप इसे पढ़ सकते हैं।

+166

सूची एक वर्ग नहीं है यह एक इंटरफ़ेस है। इसमें कोई विधि लागू नहीं है। इसलिए यदि आप एक सूची संदर्भ पर एक विधि कहते हैं, तो आप वास्तव में दोनों मामलों में ArrayList की विधि को बुला रहे हैं। – robonerd

+3

एक अंतर है, जैसा कि @robonerd ऊपर समझाया गया है। सूची एक इंटरफ़ेस है, आप कक्षाओं या आदिम प्रकारों के साथ ही इंटरफ़ेस के साथ चर टाइप कर सकते हैं। – emaringolo

+4

दोस्तों, कृपया मेरी पोस्ट सावधानीपूर्वक पढ़ें। कार्यान्वयन के साथ परिभाषा मिश्रण मत करो। दोनों मामलों में कार्यान्वयन समान है: ऐरेलिस्ट। परिवर्तनीय अलग परिभाषित किया गया है। सुनिश्चित नहीं है कि आप मेरे उत्तर में क्या बदलने की कोशिश कर रहे हैं। – ATrubka