जावा प्रायोरिटी क्यू

इस ट्यूटोरियल में, हम उदाहरणों की मदद से जावा संग्रह फ्रेमवर्क के प्रायोरिटी क्यू वर्ग के बारे में जानेंगे।

PriorityQueueवर्ग ढेर डेटा संरचना की सुविधा प्रदान करता है।

यह क्यू इंटरफ़ेस को लागू करता है।

सामान्य कतारों के विपरीत, प्राथमिकता वाले कतार तत्वों को क्रमबद्ध क्रम में प्राप्त किया जाता है।

मान लीजिए, हम आरोही क्रम में तत्वों को पुनः प्राप्त करना चाहते हैं। इस मामले में, प्राथमिकता कतार का प्रमुख सबसे छोटा तत्व होगा। एक बार जब यह तत्व प्राप्त हो जाता है, तो अगला सबसे छोटा तत्व कतार का प्रमुख होगा।

यह ध्यान रखना महत्वपूर्ण है कि प्राथमिकता कतार के तत्वों को क्रमबद्ध नहीं किया जा सकता है। हालांकि, तत्वों को हमेशा क्रमबद्ध क्रम में पुनर्प्राप्त किया जाता है।

प्राथमिकता बनाना

प्राथमिकता कतार बनाने के लिए, हमें java.util.PriorityQueueपैकेज को आयात करना होगा । एक बार जब हम पैकेज आयात करते हैं, तो यहां बताया गया है कि हम जावा में एक प्राथमिकता कतार कैसे बना सकते हैं।

 PriorityQueue numbers = new PriorityQueue(); 

यहां, हमने बिना किसी तर्क के प्राथमिकता कतार बनाई है। इस मामले में, प्राथमिकता कतार का प्रमुख कतार का सबसे छोटा तत्व है। और तत्वों को कतार से आरोही क्रम में हटा दिया जाता है।

हालांकि, हम Comparatorइंटरफ़ेस की मदद से तत्वों के क्रम को अनुकूलित कर सकते हैं । हम इस बारे में बाद में इस ट्यूटोरियल में जानेंगे।

प्राथमिकता के तरीके

PriorityQueueवर्ग सभी में मौजूद तरीकों में से कार्यान्वयन प्रदान करता है Queueइंटरफ़ेस।

प्राथमिकता के लिए तत्वों को सम्मिलित करें

  • add()- निर्दिष्ट तत्व को कतार में सम्मिलित करता है। यदि कतार भरी है, तो यह एक अपवाद फेंकता है।
  • offer()- निर्दिष्ट तत्व को कतार में सम्मिलित करता है। यदि कतार भर जाती है, तो वह वापस आ जाती है false

उदाहरण के लिए,

 import java.util.PriorityQueue; class Main ( public static void main(String() args) ( // Creating a priority queue PriorityQueue numbers = new PriorityQueue(); // Using the add() method numbers.add(4); numbers.add(2); System.out.println("PriorityQueue: " + numbers); // Using the offer() method numbers.offer(1); System.out.println("Updated PriorityQueue: " + numbers); ) ) 

आउटपुट

 प्रायोरिटी क्यू: (२, ४) अपडेटेड प्रायोरिटी क्यू: (१, ४, २) 

यहां, हमने एक प्राथमिकता कतार बनाई है जिसका नाम संख्या है। हमने कतार में 4 और 2 सम्मिलित किए हैं।

हालाँकि 4 को 2 से पहले डाला जाता है, क्यू का सिर 2 है। ऐसा इसलिए है क्योंकि प्राथमिकता कतार का प्रमुख कतार का सबसे छोटा तत्व है।

हमने फिर कतार में 1 डाला है। कतार को अब सबसे छोटे तत्व 1 को कतार के सिर पर संग्रहीत करने के लिए पुनर्व्यवस्थित किया जाता है।

प्रायोरिटी क्यू तत्वों तक पहुँचें

प्राथमिकता कतार से तत्वों तक पहुंचने के लिए, हम peek()विधि का उपयोग कर सकते हैं । यह विधि कतार के प्रमुख को लौटाती है। उदाहरण के लिए,

 import java.util.PriorityQueue; class Main ( public static void main(String() args) ( // Creating a priority queue PriorityQueue numbers = new PriorityQueue(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.println("PriorityQueue: " + numbers); // Using the peek() method int number = numbers.peek(); System.out.println("Accessed Element: " + number); ) ) 

आउटपुट

 प्राथमिकता क्यू: (१, ४, २) अभिगम तत्व: १ 

प्राथमिकता तत्व निकालें

  • remove() - कतार से निर्दिष्ट तत्व निकालता है
  • poll() - लौटकर कतार के प्रमुख को हटा देता है

उदाहरण के लिए,

 import java.util.PriorityQueue; class Main ( public static void main(String() args) ( // Creating a priority queue PriorityQueue numbers = new PriorityQueue(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.println("PriorityQueue: " + numbers); // Using the remove() method boolean result = numbers.remove(2); System.out.println("Is the element 2 removed? " + result); // Using the poll() method int number = numbers.poll(); System.out.println("Removed Element Using poll(): " + number); ) ) 

आउटपुट

प्राथमिकता क्यू: (1, 4, 2) तत्व 2 को हटा दिया गया है? चुनाव का उपयोग करके सच निकाला गया तत्व (): १

प्राथमिकता के आधार पर Iterating

प्राथमिकता कतार के तत्वों पर पुनरावृति करने के लिए, हम iterator()विधि का उपयोग कर सकते हैं । इस पद्धति का उपयोग करने के लिए, हमें java.util.Iteratorपैकेज को आयात करना चाहिए । उदाहरण के लिए,

 import java.util.PriorityQueue; import java.util.Iterator; class Main ( public static void main(String() args) ( // Creating a priority queue PriorityQueue numbers = new PriorityQueue(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.print("PriorityQueue using iterator(): "); //Using the iterator() method Iterator iterate = numbers.iterator(); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

आउटपुट

 पुनरावृत्ति का उपयोग कर प्राथमिकता (): 1, 4, 2, 

अन्य प्राथमिकता के तरीके

तरीके वर्णन
contains(element) निर्दिष्ट तत्व के लिए प्राथमिकता कतार खोजता है। यदि तत्व पाया जाता है, तो यह वापस लौटता है true, यदि यह वापस नहीं आता है false
size() प्राथमिकता कतार की लंबाई लौटाता है।
toArray() प्राथमिकता कतार को एक सरणी में परिवर्तित करता है और उसे वापस लौटाता है।

प्रायोरिटी क्यू तुलनाकर्ता

उपरोक्त सभी उदाहरणों में, प्राथमिकता कतार तत्वों को प्राकृतिक क्रम (आरोही क्रम) में पुनर्प्राप्त किया जाता है। हालाँकि, हम इस आदेश को अनुकूलित कर सकते हैं।

इसके लिए, हमें अपना खुद का तुलनित्र वर्ग बनाना होगा जो Comparatorइंटरफ़ेस को लागू करता है। उदाहरण के लिए,

 import java.util.PriorityQueue; import java.util.Comparator; class Main ( public static void main(String() args) ( // Creating a priority queue PriorityQueue numbers = new PriorityQueue(new CustomComparator()); numbers.add(4); numbers.add(2); numbers.add(1); numbers.add(3); System.out.print("PriorityQueue: " + numbers); ) ) class CustomComparator implements Comparator ( @Override public int compare(Integer number1, Integer number2) ( int value = number1.compareTo(number2); // elements are sorted in reverse order if (value> 0) ( return -1; ) else if (value < 0) ( return 1; ) else ( return 0; ) ) ) 

आउटपुट

 वरीयता: (4, 3, 1, 2) 

उपरोक्त उदाहरण में, हमने एक तर्क के रूप में CustomComparator वर्ग को प्राथमिकता देने वाली कतार बनाई है।

CustomComparator वर्ग Comparatorइंटरफ़ेस को लागू करता है।

हम फिर compare()विधि को ओवरराइड करते हैं । विधि अब तत्व के प्रमुख को सबसे बड़ी संख्या बनाती है।

तुलनित्र के बारे में अधिक जानने के लिए, जावा तुलनित्र पर जाएँ।

दिलचस्प लेख...