2013-03-25 11 views
20

क्या फर्क जब पैदा कर रही है इन दो वस्तुओंअंतर,

Queue<String> test = new LinkedList<String>(); 

और

List<String> test2 = new LinkedList<String>(); 

test और test2 के बीच वास्तविक अंतर क्या हैं सूची बनाम कतार? क्या वे दोनों LinkedList हैं? क्या प्रदर्शन अंतर या दूसरे पर एक का उपयोग करने के कारण हैं?

+0

@ भेशगुरंग- क्या आप निश्चित हैं?मुझे पूरा यकीन है कि ये दोनों कानूनी जावा कोड हैं। – templatetypedef

+1

वे संकलित नहीं करते हैं क्योंकि वे एक() नहीं खो रहे हैं, क्योंकि असाइनमेंट अवैध नहीं होगा :) – Affe

+0

ठीक() को ठीक किया गया है –

उत्तर

33

आपके द्वारा लिखे गए दो बयान प्रत्येक स्ट्रिंग की सूची रखने के लिए LinkedList<String> ऑब्जेक्ट का निर्माण करते हैं, फिर इसे एक चर के लिए असाइन करें। अंतर चर के प्रकार में है।

प्रकार Queue<String> के एक चर के लिए LinkedList<String> आवंटित करके, आप केवल LinkedList कि Queue<String> इंटरफ़ेस है, जो enqueuing और तत्वों dequeuing लिए समर्थन शामिल है में उपलब्ध हैं में तरीकों का उपयोग कर सकते हैं। यह उपयोगी होगा यदि आपको ऐसे प्रोग्राम को लिखने की आवश्यकता है जो विभिन्न परिचालनों के लिए कतार का उपयोग करे और एक लिंक्ड सूची का उपयोग कर उस कतार को कार्यान्वित करना चाहता था।

प्रकार List<String> के एक चर के लिए LinkedList<String> आवंटित करके, आप केवल LinkedList कि List<String> इंटरफ़ेस में उपलब्ध हैं में तरीकों, जो तत्वों का एक अनुक्रम बनाए रखने के लिए सामान्य कार्यों का उपयोग कर सकते हैं। यह उपयोगी होगा, उदाहरण के लिए, यदि आपको उन तत्वों की एक सूची को संसाधित करने की आवश्यकता है जो कहीं भी बढ़ सकते हैं और सिकुड़ सकते हैं।

संक्षेप में, दो पंक्तियां एक ही वस्तु बनाती हैं लेकिन उन्हें विभिन्न तरीकों से उपयोग करने का इरादा रखती हैं। एक कहता है कि इसे एक लिंक्ड सूची द्वारा समर्थित कतार की आवश्यकता है, जबकि दूसरा कहता है कि इसे एक लिंक्ड सूची द्वारा समर्थित तत्वों के सामान्य अनुक्रम की आवश्यकता है।

आशा है कि इससे मदद मिलती है!

3

मुझे लगता है कि उनमें से दोनों बहुत ही समान हैं, सिवाय इसके कि आप किस प्रकार के तरीकों का पर्दाफाश कर रहे हैं। चूंकि लिंक्डलिस्ट दोनों इंटरफ़ेस लागू करता है, इसलिए उनमें से एक को चुनना उस इंटरफ़ेस प्रकार के तरीकों तक पहुंच को खोलता है।

कृपया, इंटरफ़ेस विधि घोषणाओं

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html http://docs.oracle.com/javase/6/docs/api/java/util/List.html

के लिए इन लिंक पर एक नज़र मैं प्रदर्शन के बारे में निश्चित नहीं हूँ ले हालांकि मैं लगता है कि यह अलग नहीं होना चाहिए वस्तु कार्यान्वयन के रूप में आम है।

3

दोनों मामलों में, आप LinkedList को तत्काल कर रहे हैं।

अंतर उन उदाहरणों के संदर्भ में उपयोग करने वाले चर के प्रकार हैं।

testQueue और test2 प्रकार List प्रकार का है। चर के प्रकार के आधार पर, आप केवल उस विशेष प्रकार पर निर्दिष्ट विधियों का आह्वान करते हैं। मुझे लगता है कि यह आपकी स्थिति के लिए महत्वपूर्ण है।

प्रदर्शन के अनुसार, यह वही होगा, क्योंकि आप दोनों मामलों में वास्तविक कार्यान्वयन का उपयोग कर रहे हैं (LinkedList)।