[java]優先隊列


Java util包中的PriorityQueue類用來表示優先隊列。優先隊列是一個以集合為基礎的抽象數據類型,隊列中的每個元素都有一個優先級值。優先級值用來表示該元素的出列的優先級。

 

Java中的優先隊列基於堆(heap)。堆是一個完全二叉樹,所以PriorityQueue不是線性結構,而是樹形結構。PriorityQueue中元素優先級的高低可以由一個Comparator類的實例來指定,如果未指定則按照自然順序排序。可以按照下面的方法建立一個指定comparator的PriorityQueue:

PriorityQueue<MyObject> PQ= new PriorityQueue<MyObject>(1, new MyComparator  implements Comparator<MyObject>(){
public  int compare(MyObject obj1,MyObject obj2){
if(obj1.getSize()<obj2.getSize()){
                 return -1;
            }
             if(obj1.getSize()>obj2.getSize()){
                 return 1;
            }
             return 0;
}}) 

這里使用PriorityQueue來存儲我自定義的對象MyObject。此對象有個方法getSize()來得到它存儲的一個有關大小的整型值,該值越大,則該對象的優先級越大。

要想按照優先級高低輸出PriorityQueue中的所有元素,則可以采用PriorityQueue類中的poll()方法,該方法得到堆頂元素,並且刪除。 此外,Java api還提供了多種操作,可以查看api文檔,http://docs.oracle.com/javase/7/docs/api/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM