2011-10-28 19 views
7

मैं एक जावा प्रोग्राम है जो इसजावा: प्राथमिकता कतार

सार्वजनिक वर्ग PriorityQueueExample की तरह चला जाता है {

public static void main(String[] args) { 
    PriorityQueue<Integer> pq = new PriorityQueue<Integer>(); 
    pq.add(10); 
    pq.add(1); 
    pq.add(9); 
    pq.add(2); 
    pq.add(8); 
    pq.add(3); 
    pq.add(7); 
    pq.add(4); 
    pq.add(6); 
    pq.add(5); 
System.out.println(pq); 

} 

}

मेरे प्रश्न क्यों प्राथमिकता कतार उन्हें सॉर्ट नहीं करता है। जावा चश्मे के अनुसार यह तुलनात्मक रूप से लागू करता है और सॉर्टिंग ऑर्डर (प्राकृतिक सॉर्टिंग)

प्रोग्राम का मेरा आउटपुट निम्नानुसार है: [1, 2, 3, 4, 5, 9, 7, 10, 6, 8 ]

उत्तर

7

प्राथमिकता कतार में सम्मिलन तत्वों की सूची को क्रमबद्ध करने के लिए पर्याप्त नहीं है, क्योंकि यह उन्हें क्रमबद्ध क्रम में संग्रहीत नहीं करता है; यह उन्हें आंशिक रूप से क्रमबद्ध ढेर आदेश में संग्रहीत करता है। आप उन्हें सुलझाने के लिए एक पाश में तत्वों को दूर करने के लिए है:

while (pq.size() > 0) 
    System.out.println(pq.remove()); 
7

यह सॉर्ट की गई है, लेकिन आंतरिक तत्वों एक ढेर में संग्रहीत हैं। यदि आप peek(), poll(), या remove() पर कॉल करते हैं, तो आपको सही ऑर्डर मिलेगा (और इस तरह आप कतारों तक पहुंच सकते हैं)।

संबंधित मुद्दे