ए Queue
कई फैशनों में कार्यान्वित किया जा सकता है, जैसे List
या Set
। वे सभी केवल विभिन्न प्रकार के संग्रह के लिए एक अनुबंध निर्दिष्ट करते हैं।
एक ArrayList
, हालांकि, List
का एक विशेष कार्यान्वयन है, जो आंतरिक रूप से तत्वों को संग्रहीत करने के लिए एक सरणी का उपयोग करने के लिए बनाया गया है। LinkedList
List
का कार्यान्वयन भी है, जो इंटरकनेक्टेड नोड्स की श्रृंखला का उपयोग करता है, यानी doubly linked list। इसी तरह, TreeSet
और HashMap
क्रमशः सेट और मानचित्र के विशेष कार्यान्वयन हैं।
अब, Stack
यहां एक अजीब मामला है, खासकर क्योंकि यह जावा के पुराने संस्करणों से विरासत वर्ग है। आपको वास्तव में Stack
का उपयोग नहीं करना चाहिए; इसके बजाय, आपको अपने आधुनिक समकक्ष, ArrayDeque
का उपयोग करना चाहिए। ArrayDeque
Deque
(एक डबल-एंडेड कतार) का कार्यान्वयन है, जो आंतरिक रूप से भंडारण के लिए एक सरणी का उपयोग करता है (जो कि Stack
करता है)। एक Deque
एक Stack
के कार्यों के सभी का समर्थन करता है, pop
, push
, आदि जैसे Deque
के अन्य कार्यान्वयन, के रूप में किसी और के द्वारा उल्लेख किया है, LinkedList
शामिल है, हालांकि यह है कि में Stack
से भटक अंतर्निहित यह एक सरणी नहीं है, लेकिन एक दोगुना से जुड़े सूची: -पी
अब, Queue
के कई कार्यान्वयन हैं, और कई अलग-अलग प्रकार के Queue
एस हैं। आपके पास केवल BlockingQueue
s (अक्सर निर्माता-उपभोक्ता के लिए उपयोग किया जाता है), जिनके सामान्य कार्यान्वयन में LinkedBlockingQueue
और ArrayBlockingQueue
शामिल हैं, लेकिन TransferQueue
s, और इसी तरह भी। मैं digress ... आप प्रासंगिक Java Tutorial में संग्रह एपीआई पर और अधिक पढ़ सकते हैं।
आप सही ढंग से एक हल्के विसंगति देखा गया है। जावा बहुत अच्छा है, कुल मिलाकर, लेकिन दुनिया में बाहर भी कुछ भी बिल्कुल सही नहीं है। :-) वीर का उत्तर नीचे उल्लेख करता है कि स्टैक पुराने संस्करण से है, लेकिन कभी-कभी सब कुछ चारों ओर रहना पड़ता है। –
यह दिलचस्प है कि यदि आप 'कतार' एपीआई दस्तावेज़ों के "उपयोग" पर क्लिक करते हैं, तो आप कार्यान्वयन देखेंगे लेकिन वास्तव में इसका उपयोग करने वाले कुछ भी नहीं।सामान्य उपयोग में इसका उपयोग कक्षा के भीतर निजी रूप से किया जाता है। इंटरफेस मौजूद नहीं होने पर कोई महत्वपूर्ण प्रभाव नहीं पड़ेगा। –