deque java deque implementation
यह ट्यूटोरियल जावा में डीक या 'डबल-एंडेड क्यू' की विस्तृत व्याख्या प्रदान करता है। आप Deque Interface, API Methods, Implementation, आदि के बारे में जानेंगे:
जावा में डीक या 'डबल-एंडेड कतार' एक डेटा संरचना है जिसमें हम दोनों सिरों से तत्वों को सम्मिलित या हटा सकते हैं। यह java.util पैकेज से संबंधित जावा में एक इंटरफ़ेस है और यह java.queue इंटरफ़ेस को लागू करता है।
हम स्टैक के रूप में (अंतिम में, पहले आउट) संरचना के रूप में या एक कतार (पहली-पहली-बाहर) के रूप में deque को लागू कर सकते हैं। स्टेक और / या लिंक्डलिस्ट की तुलना में डेक्स तेज है। Deque को 'डेक' के रूप में 'कार्ड के डेक' के रूप में उच्चारित किया जाता है।
=> जावा प्रशिक्षण ट्यूटोरियल के ए-जेड को देखने के लिए यहां देखें।
आप क्या सीखेंगे:
जावा के बारे में
एक विशिष्ट deque संग्रह नीचे दिखाया गया है:
सेल्सफोर्स डेवलपर अनुभवी के लिए साक्षात्कार प्रश्न
Deque का उपयोग ज्यादातर स्टैक, कतार या डेटा संरचनाओं को लागू करने के लिए किया जाता है। इसका उपयोग प्राथमिकता वाली कतारों को लागू करने के लिए भी किया जा सकता है। वेब ब्राउजरों में ज्यादातर मौजूद पूर्ववत या इतिहास की विशेषताओं को देवताओं का उपयोग करके लागू किया जा सकता है।
Java Deque Interface
नीचे दिए गए आरेख में डबल-एंडेड कतार या डीके के लिए पदानुक्रम दिखाया गया है। जैसा कि नीचे दिए गए आरेख में दिखाया गया है, Deque इंटरफ़ेस कतार इंटरफ़ेस तक विस्तृत है जो बदले में Collection इंटरफ़ेस का विस्तार करता है।
हमारे कार्यक्रम में एक deque इंटरफ़ेस का उपयोग करने के लिए, हमें उस पैकेज को आयात करना होगा जो आयात विवरण का उपयोग करके deque कार्यक्षमता रखता है जैसा कि नीचे दिखाया गया है।
import java.util.deque;
या
import java.util.*;
चूँकि deque एक इंटरफ़ेस है, हमें deque इंटरफ़ेस की कार्यक्षमता को लागू करने के लिए ठोस वर्गों की आवश्यकता होती है।
नीचे दो वर्गों, deque इंटरफ़ेस को लागू करें।
- ArrayDeque
- लिंक्ड सूची
इसलिए हम नीचे दिखाए गए अनुसार इन दो वर्गों का उपयोग करके ऑब्जेक्ट बना सकते हैं:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList ();
इस प्रकार एक बार ऊपर दिए गए deque ऑब्जेक्ट्स सफलतापूर्वक बनने के बाद, वे deque इंटरफ़ेस की कार्यक्षमता का उपयोग कर सकते हैं।
नीचे दिए गए कुछ महत्वपूर्ण बिंदुओं के बारे में बताया गया है:
- Deque इंटरफ़ेस रिसैजेबल एरेज़ का समर्थन करता है जो आवश्यकतानुसार बढ़ सकता है।
- ऐरे देवता अशक्त मूल्यों के उपयोग की अनुमति नहीं देते हैं।
- Deque एक से अधिक थ्रेड द्वारा समवर्ती पहुँच का समर्थन नहीं करता है।
- जब तक कोई बाहरी सिंक्रनाइज़ेशन प्रदान नहीं किया जाता है तब तक थ्रेड सुरक्षित नहीं है।
ArrayDeque जावा में
ArrayDeque java.util पैकेज के अंतर्गत आता है। यह deque इंटरफ़ेस को लागू करता है। आंतरिक रूप से, ArrayDeque वर्ग गतिशील रूप से आकार देने वाले सरणी का उपयोग करता है जो तत्वों की संख्या बढ़ने पर बढ़ता है।
नीचे का चित्र ArrayDeque वर्ग के लिए पदानुक्रम दिखाता है:
चित्र में दिखाया गया है, ArrayDeque वर्ग AbstractCollection वर्ग विरासत में मिला है और Deque इंटरफ़ेस को लागू करता है।
सफेद बॉक्स परीक्षण और ब्लैकबॉक्स परीक्षण के बीच अंतर
हम नीचे दिखाए गए अनुसार ArrayDeque वर्ग का उपयोग करके एक deque ऑब्जेक्ट बना सकते हैं:
Deque deque_obj = new ArrayDeque ();
और उदाहरण
निम्नलिखित जावा प्रोग्राम बेहतर तरीके से डीके को समझने के लिए एक सरल उदाहरण प्रदर्शित करता है। यहाँ, हमने ArrayDeque वर्ग का उपयोग किया है ताकि deque इंटरफ़ेस को तुरंत किया जा सके। हमने अभी-अभी कुछ तत्वों को डीक ऑब्जेक्ट में जोड़ा है और फिर उन्हें फ़ॉरच लूप का उपयोग करके प्रिंट किया है।
import java.util.*; public class Main { public static void main(String() args) { //Creat a Deque and add elements Deque cities_deque = new ArrayDeque(); cities_deque.add('Delhi'); cities_deque.add('Mumbai'); cities_deque.add('Bangaluru'); System.out.println('Deque Contents:'); //Traverse the Deque for (String str : cities_deque) { System.out.print(str + ' '); } } }
आउटपुट:
जावा एपीआई और विधि
जैसा कि deque इंटरफ़ेस एक कतार इंटरफ़ेस लागू करता है, यह कतार इंटरफ़ेस के सभी तरीकों का समर्थन करता है। इसके अलावा, deque इंटरफ़ेस निम्नलिखित विधियाँ प्रदान करता है जिनका उपयोग deque ऑब्जेक्ट के साथ विभिन्न ऑपरेशन करने के लिए किया जा सकता है।
नीचे दी गई तालिका में इन विधियों को संक्षेप में बताएं।
तरीका | विधि प्रोटोटाइप | विवरण |
---|---|---|
GetFirst | ई getFirst () | बिना हटाए ही पहले तत्व को हटा दें। |
जोड़ना | बूलियन ऐड (E e) | क्षमता प्रतिबंधों का उल्लंघन किए बिना दिए गए तत्व ई को छल में (पूंछ में) जोड़ता है और यदि सफलता मिलती है तो वापस लौटता है। यदि कोई स्थान रिक्त स्थान में उपलब्ध नहीं है, तो IllegalStateException को फेंकता है। |
AddFirst | शून्य जोड़ (ई) | क्षमता प्रतिबंधों का उल्लंघन किए बिना कतार के सामने दिए गए तत्व ई को जोड़ता है। |
addLast | शून्य ऐडलैस्ट (E e) | क्षमता प्रतिबंधों का उल्लंघन किए बिना तत्व को ई के अंतिम तक जोड़ता है। |
शामिल | बूलियन होता है (ऑब्जेक्ट ओ) | जाँचता है कि क्या डॉक में दिए गए तत्व ओ हैं। सही है अगर हाँ |
अवरोही | Iterator descendingIterator () | यह विधि डीस्क के लिए रिवर्स ऑर्डर पुनरावृत्ति देता है। |
तत्त्व | ई तत्व () | पहले तत्व या मस्तक का रिटर्न देता है। ध्यान दें कि यह तत्व को नहीं हटाता है। |
अंतिम लो | ई गेटलैस्ट () | बिना निकाले ही अंतिम तत्व मिल जाता है। |
इटरेटर | इटरेटर इटरेटर () | डॉक के तत्वों पर एक मानक पुनरावृत्ति देता है। |
प्रस्ताव | बूलियन पेशकश (ई ई) | क्षमता प्रतिबंधों का उल्लंघन किए बिना, ई को दिए गए तत्व (एक पूंछ के रूप में) को जोड़ता है। सफलता पर सच और असफलता पर झूठ। |
ऑफ़रफ़र्स्ट | बूलियन ऑफ़रफ़र्स्ट (E e) | क्षमता प्रतिबंधों का उल्लंघन किए बिना दिए गए तत्व ई को सामने की तरफ डालें। |
प्रस्ताव | बूलियन ऑफ़रलैस्ट (E e) | क्षमता प्रतिबंधों का उल्लंघन किए बिना दिए गए तत्व ई को अंत के अंत में डालें। |
तिरछी | ई झांकना () | एक कतार खाली होने पर (पहले तत्व) या अशक्त का सिर लौटाता है। ** सिर को नहीं हटाता है |
झांकना | ई झांकना () | बिना डिलीट किए पहले तत्व को वापस करता है। यदि रिक्त खाली है, तो अशक्त देता है। |
झांकना | ई पिकालास्ट () | बिना निकाले अंतिम तत्व को हटाता है। यदि रिक्त खाली है, तो अशक्त देता है। |
मतदान | ई चुनाव () | हटाता है और छल का सिर लौटाता है। यदि रिक्त खाली है, तो अशक्त देता है। |
प्रदुषण | ई प्रदूषण | लौटता है और छल का पहला तत्व निकालता है। यदि रिक्त खाली है, तो अशक्त देता है। |
प्रदूषक | ई पोलास्ट () | रिटर्न और deque के अंतिम तत्व को निकालता है। यदि रिक्त खाली है, तो अशक्त देता है। |
पॉप | ई पॉप () | स्टैक से उस तत्व को पॉप करें जो कि deque का उपयोग करके दर्शाया गया है। |
धक्का दें | शून्य धक्का (ई ई) | स्टैक पर दिए गए तत्व ई को क्षमता प्रतिबंधों का उल्लंघन किए बिना डीके का उपयोग करने का प्रतिनिधित्व किया। सफलता या इलीगलस्टैटटेसेप्शन पर सही रिटर्न देता है यदि कोई स्थान रिक्त स्थान पर उपलब्ध नहीं है। |
हटाना | ई निकालें () | हटाएं और मृग के सिर को वापस करें। |
हटाना | बूलियन निकालें (ऑब्जेक्ट ओ) | दिए गए तत्व o की पहली घटना को deque से निकालें। |
निकालें | ई निष्कासन | हटाएं और पहले तत्व को हटा दें। |
निष्कासन | बूलियन निष्कासन | दिए गए तत्व ओ की पहली घटना को छल से निकालता है। |
हटाएं | E निष्कासन () | हटाए गए अंतिम तत्व को हटाता है और हटाता है। |
निष्कासन | बूलियन निष्कासन | किसी दिए गए तत्व o की अंतिम घटना को deque से हटाता है। |
आकार | int आकार () | डॉक में तत्वों का आकार या संख्या लौटाता है। |
और जावा में कार्यान्वयन
आइए अब ऊपर चर्चा की गई कुछ प्रमुख डॉक विधियों को प्रदर्शित करने के लिए एक जावा प्रोग्राम लागू करें।
इस प्रोग्राम में, हम एक स्ट्रिंग टाइप डीके का उपयोग करते हैं और फिर विभिन्न तरीकों जैसे ऐड, ऐडफर्स्ट, ऐडलैस्ट, पुश, ऑफर, ऑफरफर्स्ट इत्यादि का उपयोग करके इस डीके में तत्वों को जोड़ते हैं, फिर हम डीके को प्रदर्शित करते हैं। इसके बाद, हम तत्वों को प्रिंट करने के लिए मानक और रिवर्स पुनरावृत्तियों को डीके और ट्रैवर्स के माध्यम से परिभाषित करते हैं।
हम अन्य तरीकों का भी उपयोग करते हैं, जैसे कि, पॉप, पुश, झांकना, पोल, हटाना आदि।
import java.util.*; public class Main { public static void main(String() args) { //Declare Deque object Deque deque = new LinkedList(); // add elements to the queue using various methods deque.add('One'); //add () deque.addFirst('Two'); //addFirst () deque.addLast('Three'); //addLast () deque.push('Four'); //push () deque.offer('Five'); //offer () deque.offerFirst('Six'); //offerFirst () deque.offerLast('Seven'); //offerLast () System.out.println('Initial Deque:'); System.out.print(deque + ' '); // Iterate using standard iterator System.out.println('
Deque contents using Standard Iterator:'); Iterator iterator = deque.iterator(); while (iterator.hasNext()) System.out.print(' ' + iterator.next()); // Iterate using Reverse order iterator Iterator reverse = deque.descendingIterator(); System.out.println('
Deque contents using Reverse Iterator:'); while (reverse.hasNext()) System.out.print(' ' + reverse.next()); // Peek () method System.out.println('
Deque Peek:' + deque.peek()); System.out.println('
Deque,After peek:' + deque); // Pop () method System.out.println('
Deque Pop:' + deque.pop()); System.out.println('
Deque,After pop:' + deque); // contains () method System.out.println('
Deque Contains Three: ' + deque.contains('Three')); deque.removeFirst(); //removeFirst () deque.removeLast(); //removeLast () System.out.println('
Deque, after removing ' + 'first and last elements: ' + deque); } }
आउटपुट:
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या Deque thread-safe Java है?
उत्तर: ArrayDeque थ्रेड-सुरक्षित नहीं है। लेकिन java.util.concurrent क्लास में ब्लॉकिंगडेक इंटरफेस, डीके का प्रतिनिधित्व करता है। यह छल धागा-सुरक्षित है।
क्यू # 2) ढेर की तुलना में तेजी से क्यों होता है?
उत्तर: ArrayDeque इंटरफ़ेस जो कि deque इंटरफ़ेस को कार्यान्वित करता है, मेमोरी कुशल है क्योंकि इसे पिछले या अगले नोड का ट्रैक रखने की आवश्यकता नहीं है। इसके अलावा, यह एक resizable कार्यान्वयन है। इस प्रकार स्टैक की तुलना में डेक्स तेजी से होता है।
क्यू # 3) क्या एक ढेर है?
उत्तर: एक छल एक दोतरफा कतार है। यह LIFO व्यवहार की अनुमति देता है और इस प्रकार इसे एक स्टैक के रूप में लागू किया जा सकता है, हालांकि यह स्टैक नहीं है।
क्यू # 4) Deque का उपयोग कहाँ किया जाता है?
उत्तर: एक deque का उपयोग ज्यादातर पूर्ववत और इतिहास जैसी सुविधाओं को लागू करने के लिए किया जाता है।
Q # 5) क्या Deque गोलाकार है?
उत्तर: हाँ, Deque गोलाकार है।
निष्कर्ष
यह जावा में Deque इंटरफ़ेस पर हमारे ट्यूटोरियल को पूरा करता है। डीक इंटरफ़ेस को एक डेटा संरचना द्वारा कार्यान्वित किया जाता है जो एक संग्रह है जो दोनों सिरों से तत्वों को सम्मिलित और हटा सकता है।
दो वर्ग यानी ArrayDeque और LinkedList deque इंटरफ़ेस को लागू करते हैं। हम इन वर्गों का उपयोग डेक्स इंटरफ़ेस की कार्यक्षमता को लागू करने के लिए कर सकते हैं।
=> एक्सक्लूसिव जावा ट्रेनिंग ट्यूटोरियल सीरीज़ के लिए यहां जाएं।
अनुशंसित पाठ
- उदाहरणों के साथ C ++ में डबल एंडेड कतार (Deque)
- जावा कतार - कतार विधि, उदाहरणों के साथ कतार कार्यान्वयन
- जावा प्राथमिकता कतार ट्यूटोरियल - कार्यान्वयन और उदाहरण
- चित्रण के साथ C ++ में प्राथमिकता कतार डेटा संरचना
- कतार डेटा संरचना चित्रण के साथ C ++ में
- सी ++ सर्कुलर कतार डेटा संरचना: कार्यान्वयन और अनुप्रयोग
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- एसटीएल में प्राथमिकता कतार