मुझे लगता है कि वे बहुत समान हैं ... और हमें स्टैक या कतार का उपयोग करने की आवश्यकता कब है, क्यों न केवल उन्हें बदलने के लिए ArrayList या LinkedList का उपयोग करें?कतार एक इंटरफ़ेस है जबकि कक्षा एक स्टैक क्यों है?
उत्तर
Stack
, Vector
से प्राप्त वस्तुओं की एक अंतिम-प्रथम-प्रथम-स्टैक है, यह भी एक वर्ग है। Vector
जावा के मूल रूप से भेजे गए संग्रहों के "पुराने" सेट के साथ जाता है, और अंततः AbstractCollection
से प्राप्त होता है। ध्यान दें, Stack
का वास्तव में एक कैननिक कार्यान्वयन है; Queue
एस और List
के पास कई अच्छी तरह से ज्ञात कार्यान्वयन हैं जो सही तरीके से चुने जाने पर पर्याप्त प्रदर्शन अंतर कर सकते हैं।
Queue
दूसरी ओर संग्रह के "नए" सेट से Collection
इंटरफ़ेस का पालन करता है जो आमतौर पर उपयोग किए जाते हैं, इसलिए यह इंटरफेस का पालन करता है और विभिन्न कार्यान्वयन के साथ आता है।
Stack
एस का उपयोग तब किया जाना चाहिए जब आपको लिफो सेमेटिक्स की आवश्यकता हो, जबकि Queue
एस का उपयोग तब किया जाना चाहिए जब आपको फर्स्ट-इन-फर्स्ट-आउट अर्थशास्त्र की आवश्यकता हो।
ArrayList
और LinkedList
दुकान चीजों की संग्रह का आदेश दिया और Stack
या Queue
सीधे का उपयोग-मामले के साथ नहीं मिलाया गया है। Stack
एस और Queue
एस डेटा के अर्थ बफर में हैं, जबकि List
के अर्थशास्त्र आमतौर पर ऐसा करते हैं कि यह डेटा की एक दुकान है; Stack
या Queue
को लागू करने के लिए List
का उपयोग करने से आपको कुछ भी रोक नहीं रहा है।
ठीक है, एक कारण यह है कि क्विज़ के वेरिएंट हैं जो प्राथमिकता की तरह, स्वैप करने में सक्षम होना सुविधाजनक है। वे एक ही इंटरफ़ेस को पूरा करते हैं लेकिन अलग-अलग व्यवहार करते हैं। मुझे नहीं लगता कि स्टैक्स के लिए ऐसा कुछ भी है, या कम से कम इसका उपयोग लगभग अक्सर नहीं किया जाता है।
आप केवल एक ऐरेलिस्ट का उपयोग करके प्राथमिकता कतार अनुकरण करने में सक्षम नहीं होंगे।
इसके अतिरिक्त, आपके दूसरे प्रश्न के संबंध में, यदि आप अर्थात् का उपयोग कर रहे हैं तो आपको शायद एक स्टैक या कतार का उपयोग करना चाहिए। यही है, अगर आप ग्राफ ट्रैवर्सल जैसे कुछ कर रहे हैं, तो यह आपके द्वारा उपयोग की जा रही डेटा संरचना के बारे में बहुत स्पष्ट होने में मदद करता है।
बहुत बहुत धन्यवाद – Yang
- 1. क्यों ArayBlockingQueue को एक बाध्य कतार कहा जाता है जबकि एक LinkedBlockingQueue को एक अवरुद्ध अवरुद्ध कतार कहा जाता है?
- 2. नेट फ्रेमवर्क की प्राथमिकता कतार कक्षा क्यों नहीं है?
- 3. UtteranceProgressListener एक इंटरफ़ेस क्यों नहीं है?
- 4. क्यों एक विंडोज़ संदेश कतार
- 5. एक सिंगलटन कक्षा इंटरफ़ेस का उपयोग कैसे कर सकती है?
- 6. क्या कक्षा एक कक्षा दोनों का विस्तार कर सकती है और एक इंटरफ़ेस
- 7. एक निजी इंटरफ़ेस क्या है?
- 8. : कार्य के बाहर एक स्टैक आवंटित संरचना क्यों मौजूद है?
- 9. यह आदेश prolog में एक स्टैक ओवरफ़्लो क्यों बनाता है?
- 10. यह कोड एक स्टैक ओवरफ़्लो क्यों उत्पन्न करता है?
- 11. एक कतार
- 12. एक इंटरफ़ेस
- 13. एक कतार
- 14. अलार्म इतिहास स्टैक या कतार?
- 15. ढेर और कतार, क्यों?
- 16. एक कतार
- 17. एक कतार
- 18. एक कक्षा क्यों सील करें?
- 19. हमें कक्षा के बजाय इंटरफ़ेस की आवश्यकता क्यों है और हम इंटरफ़ेस
- 20. कैसे उत्पादन एक सूचकांक है, जबकि अजगर
- 21. जावा की स्ट्रिंग इंटरफ़ेस एक फ्लाईवेट है?
- 22. एक इंटरफ़ेस
- 23. जबकि एक शर्त चर
- 24. एक विस्तार कक्षा क्या है?
- 25. इंटरफ़ेस/सार कक्षा
- 26. सी ++ डेक बनाम कतार बनाम स्टैक
- 27. Django की मेटा एक पुरानी शैली की कक्षा क्यों है?
- 28. जावा में एक तेज कतार
- 29. एक इंटरफ़ेस अन्य इंटरफ़ेस को कार्यान्वित क्यों नहीं कर सकता है?
- 30. एक इंटरफ़ेस
आपको एक अच्छी डेटा संरचना पुस्तक पढ़नी चाहिए। संक्षेप में: प्रतिबंध प्रदर्शन को बेहतर बना सकते हैं और कोड को समझने की सादगी बढ़ा सकते हैं। –
क्योंकि जावा के डिजाइनर एपीआई पर चूसते हैं। स्टैक ** ** एक इंटरफ़ेस होना चाहिए, इसलिए ढेर के विभिन्न कार्यान्वयन हो सकते हैं। उदाहरण के लिए एक सरणी-सूची आधारित स्टैक और एक लिंक-सूची आधारित स्टैक। इसके बजाए, उन्होंने एक शॉर्टकट और उप-वर्गीकृत वेक्टर को कुछ प्रकार के फ्रैंकन-स्टैक बनाने के लिए लिया जो उसके माता-पिता के बहुत से गलत कार्यान्वयन विवरण का खुलासा करता है। उन्होंने एक डेक (यानी एक और ढेर कार्यान्वयन) बनाकर इसे सही करने का प्रयास किया लेकिन अभी और अधिक भ्रम पैदा किया। –