java中PriorityQueue優先順序佇列使用方法
PriorityQueue是從JDK1.5開始提供的新的資料結構介面。
如果不提供Comparator的話,優先佇列中元素預設按自然順序排列,也就是數字預設是小的在佇列頭,字串則按字典序排列。
由於網上的資料大多將優先順序佇列各個方法屬性,很少有例項講解的,為方便大家以後使用,我就寫了個demo~
如果想實現按照自己的意願進行優先順序排列的佇列的話,需要實現Comparator介面。下面的方法,實現了根據某個變數,來進行優先順序佇列的建立。
-
import
- import java.util.PriorityQueue;
- import java.util.Queue;
- publicclass test {
- private String name;
- privateint population;
- public test(String name, int population)
- {
- this.name = name;
- this.population = population;
- }
-
public
- {
- returnthis.name;
- }
- publicint getPopulation()
- {
- returnthis.population;
- }
- public String toString()
- {
- return getName() + " - " + getPopulation();
- }
- publicstaticvoid main(String args[])
- {
-
Comparator<test> OrderIsdn = new
- publicint compare(test o1, test o2) {
- // TODO Auto-generated method stub
- int numbera = o1.getPopulation();
- int numberb = o2.getPopulation();
- if(numberb > numbera)
- {
- return1;
- }
- elseif(numberb<numbera)
- {
- return -1;
- }
- else
- {
- return0;
- }
- }
- };
- Queue<test> priorityQueue = new PriorityQueue<test>(11,OrderIsdn);
- test t1 = new test("t1",1);
- test t3 = new test("t3",3);
- test t2 = new test("t2",2);
- test t4 = new test("t4",0);
- priorityQueue.add(t1);
- priorityQueue.add(t3);
- priorityQueue.add(t2);
- priorityQueue.add(t4);
- System.out.println(priorityQueue.poll().toString());
- }
- }
相關推薦
java中PriorityQueue優先順序佇列使用方法
優先順序佇列是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。 PriorityQueue是從JDK1.5開始提供的新的資料結構介面。 如果不提供Comparator的話,優先佇列中元素預設按自然順序排列,也就是數字預設是小的在
java中(優先佇列)PriorityQueue的使用
import java.util.*; public class test1 { public static void PrintPr(Queue<?> queue){ while(queue.peek()!=null){ System.ou
java中String類常用方法、屬性等
col clas equal ack length ++ ava eal rgs package Head18; public class java09 { public static void main(String[] args) { St
Java中的泛型方法
pan sta 有一個 println 泛型方法 判斷 調用方法 user instant 這是一個轉載的博客 這是一個轉載的博客 這是一個轉載的博客 泛型是什麽意思在這就不多說了,而Java中泛型類的定義也比較簡單,例如:public class Test<T&
JAVA中構造器和方法的區別點
string dem pub 關鍵字 意義 ext 沒有 ron 開始 要學習Java,你必須理解構造器。因為構造器可以提供許多特殊的方法,這個對於初學者經常混淆。但是,構造器和方法又有很多重要的區別。 下面將簡單介紹一下 ,最後用一個表作了些簡單的總結。 功能和作用的不同
java中String的常用方法
大寫 緩沖 let 常用方法 類型 http 全部 new 出現 轉自http://www.cnblogs.com/crazyac/articles/2012791.html java中String的常用方法1、length() 字符串的長度 例:char chars[]
Java中調用JavaScript方法
兩個 tint work object c ash 沒有 .net nashorn alc 我們都知道腳本語言非常靈活,在處理某些問題的時候 Java 實現用十幾行來寫,用 js 可能不到十行就寫完,並且非常簡潔,那麽有沒有一種優雅的方式將 Java 與腳本語言結合呢,在
Java中wait和sleep方法的區別
lee join 告訴 inter art 過程 lam 兩個 一次 1、兩者的區別 這兩個方法來自不同的類分別是Thread和Object 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法(鎖代碼塊和方法鎖)。 w
java 中sendredirect()和forward()方法的區別
rect 次數 報錯 nec 重定向 web服務 單獨 exception aca 一.文章1 HttpServletResponse.sendRedirect與RequestDispatcher.forward方法都可以實現獲取相應URL資源。 sendRedirect
Java中類的構造方法
擴展 這樣的 實例化 構造函數 中文 編譯器 new對象 const 一個 constructor;構造函數。 在創建對象的時候,對象成員可以由構造函數方法進行初始化。 new對象時,都是用構造方法進行實例化的; 例如;Test test = new Test("a")
java中JMS訊息佇列初始
1.什麼是訊息佇列: JMS是一個訊息服務的標準或者說是規範,允許應用程式元件基於JavaEE平臺建立、傳送、接收和讀取訊息。它使分散式通訊耦合度更低,訊息服務更加可靠以及非同步性。 2.JMS基本概念: JMS是ja
NSQ原始碼分析(四)——inFlightPqueue和PriorityQueue優先順序佇列
在Channel結構體中用到了兩種優先順序佇列pqueue.PriorityQueue和inFlightPqueue。 deferredMessages map[MessageID]*pqueue.Item deferredPQ pqueue.Priorit
java中Thread類run()方法和start()方法的區別
run方法:不啟動新執行緒 public void run() { if (target != null) { target.run(); } } start()方法:啟動一個執行緒 public synchronized void start()
Java中next與nextLine方法的區別
1. Java中的Scanner類中的方法next()與nextLine()都是吸取輸入控制檯輸入的字元 ①next()方法不會吸取字元前和後的空格/Tab,只吸取字元,開始吸取字元(字元前後不算) 直到遇到空格/Tab/回車擷取吸取 ②nextLine()吸取字元前後的空格/Tab鍵,回車鍵截
java中常見的math方法
java中常見的math方法 java.lang.Math : 隨機: static double random() 返回一個介於[0,1)之間的隨機數 拓展: Math.ceil(Math.random()*10);返
Java中一些類的方法
Object類 (1)public int hashCode() a:返回該物件的雜湊碼值。預設情況下,該方法會根據物件的地址來計算。 b:不同物件的,hashCode()一般來說不會相同。 但是,同一個物件的hashCode()值肯定相同。 c:不是物件的實際地址值,可以理解為邏
關於Java中的Arrays.copyOfRange()方法
關於Java中的Arrays.copyOfRange()方法 轉載:https://blog.csdn.net/babylorin/article/details/67
java中讀取檔案的方法
不同的方法需要匯入不同的包,使用Ctrl+Shift+O導包即可。 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExc
深入理解Java中的同步靜態方法和synchronized(class)程式碼塊的類鎖 深入理解Java併發synchronized同步化的程式碼塊不是this物件時的操作
一.回顧學習內容 在前面幾篇部落格中我我們已經理解了synchronized物件鎖、物件鎖的重入、synchronized方法塊、synchronized非本物件的程式碼塊, 連結:https://www.cnblogs.com/SAM-CJM/category/1314992.h
PriorityQueue(優先順序佇列)
先進先出描述了最典型的佇列規則。佇列規則是指在給定一組佇列中的元素的情況下,確定下一個彈出佇列元素的規則。先進先出宣告的是下一個元素應該是等待時間最長的元素。 當你在PriorityQueue上呼叫offer()方法來插入一個物件時,這個物件會在佇列中被排序。預設的排