java priority queue tutorial implementation examples
यह ट्यूटोरियल उदाहरणों के साथ कार्यान्वयन के साथ-साथ जावा प्राथमिकता कतार और संबंधित अवधारणाओं, न्यूनतम, और अधिकतम प्राथमिकता कतार की व्याख्या करता है:
प्राथमिकता कतार डेटा संरचना एक विशेष कतार है जिसमें तत्व एफआईएफओ के आदेश के अनुसार मौजूद नहीं हैं, लेकिन कतार निर्माण के दौरान उपयोग किए गए प्राकृतिक तत्वों या किसी भी कस्टम तुलनित्र के अनुसार।
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
आप क्या सीखेंगे:
जावा में प्राथमिकता कतार
प्राथमिकता कतार में, कतार के अग्र भाग में प्राकृतिक क्रम के अनुसार कम से कम तत्व होते हैं और पीछे कतार में सबसे बड़े तत्व को इंगित किया जाता है।
संख्याओं से मिलकर एक उदाहरण प्राथमिकता कतार नीचे दी गई है।
pdf फाइल को कैसे खोला जाता है
इस प्रकार जब किसी तत्व को ऊपर दिखाए गए प्राथमिकता कतार से हटा दिया जाता है, तो यह सबसे कम तत्व होगा।
इसी प्रकार, एक वर्णानुक्रम प्राथमिकता कतार के लिए, ASCII मानों पर विचार किया जाएगा और ASIIII मानों के अनुसार कतार तत्वों का आदेश दिया जाएगा।
नीचे सूचीबद्ध कुछ प्रमुख विशेषताएं प्रायरिटी क्यू की हैं:
- प्राथमिकता कतार एक अनबाउंड कतार है।
- प्रायोरिटी क्यू अशक्त मूल्यों की अनुमति नहीं देती है।
- गैर-तुलनीय वस्तुओं के लिए, हम एक प्राथमिकता कतार नहीं बना सकते हैं।
- प्रायोरिटी क्यू से एब्सट्रैक्ट क्यू, एब्सट्रूलेशन, कलेक्शन और ऑब्जेक्ट जैसी कक्षाएं विरासत में मिली हैं।
- कतार के सिर या सामने प्राकृतिक क्रम के अनुसार कम से कम तत्व होते हैं।
- प्राथमिकता कतार कार्यान्वयन थ्रेड-सुरक्षित नहीं है। इस प्रकार यदि हम सिंक्रनाइज़ एक्सेस की इच्छा रखते हैं, तो हमें प्रायोरिटीब्लॉकिंग क्यू का उपयोग करना चाहिए।
प्राथमिकता कतार वर्ग जावा कतार इंटरफ़ेस को विरासत में मिला है और java.util पैकेज का एक हिस्सा है।
प्रायोरिटी वर्ग की सामान्य घोषणा नीचे दी गई है:
public class PriorityQueue extends AbstractQueue implements Serializable
नीचे दिए गए आरेख में प्रायोरिटी वर्ग के लिए वर्ग पदानुक्रम को दिखाया गया है।
प्राथमिकता कतार का समय जटिलता
- प्रविष्टि (enqueue) और विलोपन (dequeue) विधियों के लिए प्राथमिकता कतार की समय जटिलता, O (लॉग (n)) है।
- प्राथमिकता कतार में हटाने के लिए रैखिक समय की जटिलता है और साथ ही इसमें विधियाँ भी हैं।
- प्राथमिकता कतार के तत्वों को पुनः प्राप्त करने वाले तरीकों में निरंतर समय जटिलता होती है।
जावा में प्राथमिकता कतार उदाहरण
नीचे दिए गए कार्यक्रम में जावा में एक सरल प्राथमिकता क्यू प्रदर्शित की गई है। हम प्रायोरिटी वर्ग की एक वस्तु बनाते हैं, उसमें मान जोड़ते हैं, और फिर Iterator का उपयोग करके कतार की सामग्री प्रदर्शित करते हैं।
import java.util.*; class Main{ public static void main(String args()){ PriorityQueue cities_queue=new PriorityQueue(); //initialize the PriorityQueue with values cities_queue.add('Sydney'); cities_queue.add('Venice'); cities_queue.add('New York'); cities_queue.add('California'); cities_queue.add('Melbourne'); //print the head of the PriorityQueue System.out.println('PriorityQueue Head:'+cities_queue.element()); //Define the iterator for PriorityQueue and print its elements System.out.println('
PriorityQueue contents:'); Iterator iter=cities_queue.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
आउटपुट:
जावा प्राथमिकता कतार एपीआई तरीके
निर्माता:
कंस्ट्रक्टर प्रोटोटाइप | विवरण | |
---|---|---|
तिरछी | ई झांकना () | तत्व को हटाए बिना कतार का सिर लौटाता है। |
प्राथमिकता कतार () | एक डिफ़ॉल्ट निर्माता जो 1 के रूप में प्रारंभिक क्षमता के साथ एक प्रायोरिटी क्यू ऑब्जेक्ट बनाता है। | |
प्राथमिकता क्यू (संग्रह सी) | दिए गए संग्रह c से प्रारंभिक तत्वों के साथ एक प्रायोरिएक्यू ऑब्जेक्ट बनाता है। | |
प्राथमिकता | दिए गए 'आरंभिकता' के साथ एक प्रायोरिटी ऑब्जेक्ट बनाता है। प्राकृतिक आदेश के अनुसार तत्वों का आदेश दिया जाता है। | |
प्रायोरिटी (प्रारंभिक प्रारंभिक क्षमता, तुलनित्र तुलनित्र) | दिए गए 'आरंभिकता' के साथ एक प्रायोरिटी ऑब्जेक्ट बनाता है। तत्वों को दिए गए तुलनित्र के अनुसार क्रमबद्ध किया गया है। | |
प्रायोरिटी क्यू (वरीयता क्रम सी) | सी द्वारा दी गई एक और प्राथमिकता क्यू ऑब्जेक्ट से एक प्रायोरिटी क्यू बनाता है। | |
प्राथमिकता क्यू (क्रमबद्ध सी) | सी द्वारा दिए गए SortedSet से एक प्रायोरिटी क्यू ऑब्जेक्ट बनाता है। |
तरीकों
तरीका | विधि प्रोटोटाइप | विवरण |
---|---|---|
जोड़ना | बूलियन ऐड (E e) | तत्व को प्राथमिकता में जोड़ता है। |
स्पष्ट | शून्य स्पष्ट () | सभी तत्वों को हटाकर वरीयता क्रम को समाप्त करता है। |
COMPARATOR | तुलनित्र () | क्यू में तत्वों के क्रम के लिए उपयोग किए जाने वाले एक कस्टम तुलनित्र लौटाता है। |
शामिल | बूलियन होता है (ऑब्जेक्ट ओ) | जाँचता है कि क्या प्रायोरिटी क्यू में दिए गए तत्व ओ हैं। सही है अगर हाँ |
इटरेटर | Iteratoriterator () | दिए गए प्रायोरिटी के लिए पुनरावृति प्राप्त करने की विधि। |
प्रस्ताव | बूलियन ऑफ़र (ई ई) | दिए गए तत्व को प्राथमिकता प्राथमिकता में सम्मिलित करें। |
मतदान | ई चुनाव () | हटाता है और कतार के प्रमुख को लौटाता है। यदि कतार खाली है तो अशक्त देता है। |
हटाना | बूलियन निकालें (ऑब्जेक्ट ओ) | किसी दिए गए तत्व ओ का एक उदाहरण निकालता है यदि यह कतार में मौजूद है। |
आकार | int आकार () | इस प्राथमिकता में आकार या तत्वों की संख्या देता है। |
.अरे | ऑब्जेक्ट () toArray () | दिए गए प्रायोरिक्यू की एक सरणी प्रतिनिधित्व लौटाता है। |
.अरे | T () toArray (T () a) | निर्दिष्ट सरणी ए के समान रनटाइम प्रकार के साथ दिए गए प्राथमिकता कतार के लिए एक सरणी प्रतिनिधित्व लौटाता है। |
जावा में कार्यान्वयन
जावा प्रोग्राम का उपयोग करके प्राथमिकता के उपरोक्त तरीकों को प्रदर्शित करते हैं।
import java.util.*; class Main { public static void main(String args()) { // Creating empty priority queue PriorityQueue numQueue = new PriorityQueue(); // add elements to numQueue using add() numQueue.add('Five'); numQueue.add('One'); numQueue.add('Seven'); numQueue.add('Three'); numQueue.add('Eleven'); numQueue.add('Nine'); // Print the head element using Peek () method System.out.println('Head element using peek method:' + numQueue.peek()); // Printing all elements System.out.println('
The PriorityQueue elements:'); Iterator iter1 = numQueue.iterator(); while (iter1.hasNext()) System.out.print(iter1.next() + ' '); // remove head with poll () numQueue.poll(); System.out.println('
After removing an element' + 'with poll function:'); Iterator iter2 = numQueue.iterator(); while (iter2.hasNext()) System.out.print(iter2.next() + ' '); // Remove 'Three' using remove () numQueue.remove('Three'); System.out.println('
Element 'Three' with' + ' remove function:'); Iterator iter3 = numQueue.iterator(); while (iter3.hasNext()) System.out.print(iter3.next() + ' '); // Check if an element is present in PriorityQueue using contains() boolean ret_val = numQueue.contains('Five'); System.out.println('
Priority queue contains 'Five' ' + 'or not?: ' + ret_val); // get array equivalent of PriorityQueue with toArray () Object() numArr = numQueue.toArray(); System.out.println('
Array Contents: '); for (int i = 0; i आउटपुट:
सबसे अच्छा सेल फोन जासूस app

8 जावा में प्राथमिकता कतार
Java 8 प्राथमिकता कोड के एक और तरीके यानी। स्प्लिटरेटर () ’को जोड़ता है।
इस विधि का विवरण नीचे दिया गया है।
विधि का नाम: फाड़नेवाला
विधि प्रोटोटाइप: सार्वजनिक अंतिम स्प्लिटेटर स्प्लिटर ()
विधि विवरण: यह विधि प्रायोरिटी क्यू तत्वों पर एक स्प्लिटर बनाती है। यह बंटवारा देर से बाध्यकारी और असफल-तेज़ है।
प्राथमिकता कतार तुलनित्र
जैसा कि पहले ही उल्लेख किया गया है कि प्रायोरिटी के तत्व स्वाभाविक रूप से ऑर्डर किए जाते हैं। यदि हम ऑर्डर बदलना चाहते हैं, तो हमें एक तुलनित्र निर्दिष्ट करना चाहिए और इसे प्रायोरिटी क्यू ऑब्जेक्ट के निर्माण के दौरान उपयोग करना चाहिए। प्रायरिटीक्यूयू तब अपने तत्वों को ऑर्डर करने के लिए इस तुलनित्र का उपयोग करता है।
नीचे जावा प्रोग्राम तत्व ऑर्डरिंग के लिए कस्टम तुलनित्र के उपयोग को दर्शाता है। इस कार्यक्रम में, हम एक नए कस्टम तुलनित्र को परिभाषित करते हैं जिसके अंदर हम 'तुलना' विधि को ओवरराइड करते हैं। तुलना विधि का उपयोग लंबाई के अनुसार वरीयता क्रम के तत्वों को क्रम में करने के लिए किया जाता है।
import java.util.*; public class Main { public static void main(String() args) { // A custom comparator that compares two Strings by their length. Comparator customComparator = new Comparator() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } }; // Create a Priority Queue with a custom Comparator PriorityQueue colorsPriorityQueue = new PriorityQueue(customComparator); // Add items to a Priority Queue colorsPriorityQueue.add('Red'); colorsPriorityQueue.add('Green'); colorsPriorityQueue.add('Blue'); colorsPriorityQueue.add('Cyan'); colorsPriorityQueue.add('Magenta'); colorsPriorityQueue.add('Yellow'); // Printing all elements System.out.println('
The PriorityQueue elements with custom Comparator:'); Iterator iter1 = colorsPriorityQueue.iterator(); while (iter1.hasNext()) System.out.print(iter1.next() + ' '); } }
आउटपुट:

जावा में न्यूनतम प्राथमिकता कतार
प्राथमिकता कतार के प्राकृतिक क्रम में कतार के शीर्ष पर सबसे कम या सबसे छोटा तत्व होता है और इस प्रकार क्रम आरोही होता है। इसे तत्वों के आरोही क्रम के साथ 'न्यूनतम प्राथमिकता कतार' कहा जाता है।
नीचे दिए गए जावा कार्यक्रम जावा में न्यूनतम प्राथमिकता कतार के कार्यान्वयन को दर्शाता है।
import java.util.*; class Main{ public static void main(String args()){ //declare a PriorityQueue object with default ordering PriorityQueue pq = new PriorityQueue(); //add element to the PriorityQueue pq.add(8); pq.add(6); pq.add(4); pq.add(2); pq.add(12); pq.add(10); //display the min PriorityQueue System.out.println('The min Priority Queue (natural ordering) contents:'); Integer val = null; while( (val = pq.poll()) != null) { System.out.print(val + ' '); } } }
आउटपुट:

जावा में अधिकतम प्राथमिकता कतार
जबकि न्यूनतम प्राथमिकता कतार में आरोही क्रम में तत्व होते हैं, अधिकतम प्राथमिकता कतार में अवरोही क्रम में तत्व होते हैं यानी अधिकतम प्राथमिकता कतार का प्रमुख कतार में सबसे बड़ा तत्व वापस आ जाएगा।
नीचे दिया गया जावा प्रोग्राम जावा में मैक्स प्रायोरिटी क्यू प्रदर्शित करता है।
import java.util.*; class Main{ public static void main(String args()){ //declare a PriorityQueue object with custom comparator to generate max PQ PriorityQueue pq = new PriorityQueue(new Comparator() { public int compare(Integer lhs, Integer rhs) { if (lhs आउटपुट:

जैसा कि उपरोक्त कार्यक्रम में दिखाया गया है, प्राथमिकता कतार में तत्वों के प्राकृतिक क्रम को बदलने के लिए, हमें एक कस्टम तुलनित्र को परिभाषित करना होगा।
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में प्राथमिकता कतार क्या है?
उत्तर: एक विशेष कतार जिसमें कतार के सभी तत्वों को प्राकृतिक क्रम के अनुसार क्रमबद्ध किया जाता है या कस्टम तुलनित्र का उपयोग करना प्राथमिकता कतार कहा जाता है। यह फीफो के आदेश का पालन नहीं करता है।
Q # 2) आप जावा में अधिकतम प्राथमिकता कतार कैसे सेट करते हैं?
विंडोज़ के लिए दूरस्थ डेस्कटॉप सॉफ्टवेयर 7
उत्तर: हम एक कस्टम तुलनित्र का उपयोग करके जावा में अधिकतम प्राथमिकता कतार निर्धारित कर सकते हैं ताकि कतार का प्रमुख कतार में सबसे बड़ा तत्व वापस आ जाए।
Q # 3) क्या प्राथमिकता कतार जावा को डुप्लिकेट करने की अनुमति देती है?
उत्तर: हाँ। प्राथमिकता कतार नकली मूल्यों की अनुमति देती है।
Q # 4) क्या जावा प्राथमिकता कतार अधिकतम या न्यूनतम है?
उत्तर: डिफ़ॉल्ट रूप से, जावा में प्राथमिकता कतार प्राकृतिक क्रम के साथ न्यूनतम प्राथमिकता कतार है। इसे अधिकतम करने के लिए, हमें एक कस्टम तुलनित्र का उपयोग करना होगा ताकि कतार का सिर कतार में सबसे बड़ा तत्व लौटाए।
Q # 5) क्या एक प्राथमिकता कतार क्रमबद्ध है?
उत्तर: डिफ़ॉल्ट रूप से, कतार के प्रमुख को क्रमबद्ध किया जाता है और प्राथमिकता कतार में उसके सिर के रूप में सबसे कम तत्व होते हैं। आवश्यकता होने पर बाकी तत्वों का आदेश दिया जाता है।
निष्कर्ष
यह जावा में प्रायोरिटी क्यू पर ट्यूटोरियल को पूरा करता है। प्राथमिकता कतार एक कतार इंटरफ़ेस लागू करती है और एक विशेष कतार होती है जहाँ प्राकृतिक आदेश के अनुसार तत्वों का आदेश दिया जाता है। यह फीफो के आदेश का पालन नहीं करता है। प्राथमिकता कतार के प्राकृतिक क्रम को बदलने के लिए, हम कस्टम तुलनित्र का उपयोग कर सकते हैं।
प्रायोरिटी कतारों को मुख्य रूप से प्रिंटर शेड्यूलिंग, सीपीयू टास्क शेड्यूलिंग आदि के लिए उपयोग किया जाता है। हीप (मिनट या अधिकतम) को भी प्राथमिकता कतारों का उपयोग करके लागू किया जाता है।
=> आसान जावा प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
अनुशंसित पाठ
- चित्रण के साथ C ++ में प्राथमिकता कतार डेटा संरचना
- एसटीएल में प्राथमिकता कतार
- जावा कतार - कतार विधि, उदाहरणों के साथ कतार कार्यान्वयन
- सी ++ सर्कुलर कतार डेटा संरचना: कार्यान्वयन और अनुप्रयोग
- उदाहरणों के साथ C ++ में डबल एंडेड कतार (Deque)
- चित्रण के साथ C ++ में कतार डेटा संरचना
- एसटीएल में ढेर और कतारें
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल