日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java PriorityQueue數(shù)據(jù)結(jié)構(gòu)接口原理及用法

瀏覽:23日期:2022-08-22 11:29:09

PriorityQueue是從JDK1.5開始提供的新的數(shù)據(jù)結(jié)構(gòu)接口,它是一種基于優(yōu)先級堆的極大優(yōu)先級隊列。優(yōu)先級隊列是不同于先進先出隊列的另一種隊列。每次從隊列中取出的是具有最高優(yōu)先權(quán)的元素。如果不提供Comparator的話,優(yōu)先隊列中元素默認(rèn)按自然順序排列,也就是數(shù)字默認(rèn)是小的在隊列頭,字符串則按字典序排列(參閱 Comparable),也可以根據(jù) Comparator 來指定,這取決于使用哪種構(gòu)造方法。優(yōu)先級隊列不允許 null 元素。依靠自然排序的優(yōu)先級隊列還不允許插入不可比較的對象(這樣做可能導(dǎo)致 ClassCastException)

優(yōu)先級隊列是無界的,但是有一個內(nèi)部容量,控制著用于存儲隊列元素的數(shù)組大小。它通常至少等于隊列的大小。隨著不斷向優(yōu)先級隊列添加元素,其容量會自動增加。無需指定容量增加策略的細節(jié)

簡單應(yīng)用:

package test;import java.util.PriorityQueue;public class PriorityQueueTest1 { @SuppressWarnings('unchecked') public static void main(String[] args) { PriorityQueue queue = new PriorityQueue(); queue.add('AAAAA'); // Add接受的參數(shù)是Obj,PriorityQueue使用integer String等基本的數(shù)據(jù)類型時,默認(rèn)new時有參數(shù),如果不寫則是按照默認(rèn)排序 queue.add('BBBBB'); queue.add('CCCCC'); queue.add('DDDDD'); System.out.println(queue.peek()); // 獲取但不移除此隊列的頭 System.out.println(queue.poll()); // 獲取并移除此隊列的頭 System.out.println(queue.poll()); queue.offer('ZZZZZ'); // 將指定的元素插入此優(yōu)先級隊列 System.out.println(queue.poll()); System.out.println(queue.poll()); System.out.println(queue.poll()); System.out.println(queue.poll()); // 到這里已經(jīng)沒有元素,打印Null }}

定義比較器:

package test;import java.util.Comparator;import java.util.PriorityQueue;@SuppressWarnings('unchecked')public class PriorityQueueTest2 { private static PriorityQueue queue = new PriorityQueue(10,new Comparators()); public static void main(String[] args) { QueueObject queueObject = new QueueObject(); queueObject.setId(4); queueObject.setObject('AAAAA'); queue.add(queueObject); QueueObject queueObject1 = new QueueObject(); queueObject1.setId(1); queueObject1.setObject('BBBBB'); queue.add(queueObject1); QueueObject queueObject2 = new QueueObject(); queueObject2.setId(3); queueObject2.setObject('CCCCC'); queue.add(queueObject2); System.out.println(((QueueObject)queue.poll()).getObject()); System.out.println(((QueueObject)queue.poll()).getObject()); System.out.println(((QueueObject)queue.poll()).getObject()); }}class QueueObject { private int id; private Object object; public int getId() { return id; } public void setId(int id) { this.id = id; } public Object getObject() { return object; } public void setObject(Object object) { this.object = object; }}@SuppressWarnings('unchecked')class Comparators implements Comparator{ public int compare(Object arg0, Object arg1) { int val1 = ((QueueObject)arg0).getId(); int val2 = ((QueueObject)arg1).getId(); return val1 < val2 ? 0 : 1; }}

注意事項:

注意1:該隊列是用數(shù)組實現(xiàn),但是數(shù)組大小可以動態(tài)增加,容量無限。

注意2:此實現(xiàn)不是同步的。不是線程安全的。如果多個線程中的任意線程從結(jié)構(gòu)上修改了列表, 則這些線程不應(yīng)同時訪問 PriorityQueue 實例,這時請使用線程安全的PriorityBlockingQueue 類。

注意3:不允許使用 null 元素。

注意4:此實現(xiàn)為插入方法(offer、poll、remove() 和 add 方法)提供 O(log(n)) 時間;

為 remove(Object) 和 contains(Object) 方法提供線性時間;為檢索方法(peek、element 和 size)提供固定時間。

注意5:方法iterator()中提供的迭代器并不保證以有序的方式遍歷優(yōu)先級隊列中的元素。

至于原因可參考下面關(guān)于PriorityQueue的內(nèi)部實現(xiàn)

如果需要按順序遍歷,請考慮使用 Arrays.sort(pq.toArray())。

注意6:可以在構(gòu)造函數(shù)中指定如何排序。如:

PriorityQueue() 使用默認(rèn)的初始容量(11)創(chuàng)建一個 PriorityQueue,并根據(jù)其自然順序來排序其元素(使用 Comparable)。 PriorityQueue(int initialCapacity) 使用指定的初始容量創(chuàng)建一個 PriorityQueue,并根據(jù)其自然順序來排序其元素(使用 Comparable)。 PriorityQueue(int initialCapacity, Comparator comparator) 使用指定的初始容量創(chuàng)建一個 PriorityQueue,并根據(jù)指定的比較器comparator來排序其元素。

注意7:此類及其迭代器實現(xiàn)了 Collection 和 Iterator 接口的所有可選 方法。

PriorityQueue的內(nèi)部實現(xiàn)

PriorityQueue對元素采用的是堆排序,頭是按指定排序方式的最小元素。堆排序只能保證根是最大(最小),整個堆并不是有序的。

方法iterator()中提供的迭代器可能只是對整個數(shù)組的依次遍歷。也就只能保證數(shù)組的第一個元素是最小的

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩电影在线视频| 日韩av中文字幕一区二区三区| 国产视频网站一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频 | 国产亚洲精品美女久久久久久久久久| 午夜视频一区二区在线观看| 亚洲精品动态| 欧美日韩va| 国产精品久久久久久久久免费高清| 国产一卡不卡| 精品一区二区三区在线观看视频| 国产不卡精品在线| 高清av不卡| 午夜欧美精品久久久久久久| 美女网站久久| 青青草国产精品亚洲专区无| 日韩精彩视频在线观看| 国产精品久av福利在线观看| 国产精品二区不卡| 久久高清免费| 免费在线观看精品| 亚洲精品在线二区| 国产精品久一| 日韩啪啪电影网| 伊人影院久久| 日本电影久久久| 国产一区二区精品福利地址| 欧美成人高清| 日本免费在线视频不卡一不卡二| 久久av综合| 久久久人人人| 蜜桃视频在线观看一区二区| 国产精品一区三区在线观看| 伊人网在线播放| 每日更新成人在线视频| 国产精品毛片久久久| 久久天堂精品| 日韩精品第一| 亚洲免费成人| 国产免费久久| 久久免费大视频| 石原莉奈在线亚洲三区| 91精品麻豆| 亚洲精品国产嫩草在线观看| 蜜臀av亚洲一区中文字幕| 国产精品白丝av嫩草影院| av在线资源| 一本综合精品| 国产在线看片免费视频在线观看| 先锋亚洲精品| 国内在线观看一区二区三区| 午夜一级在线看亚洲| 麻豆精品久久| 99久久亚洲精品| 国产美女久久| 不卡在线一区二区| 久久中文字幕一区二区| 在线亚洲国产精品网站| 精品在线网站观看| 日韩中文字幕区一区有砖一区| 久久一区亚洲| 国产精品日本| 国产一区2区| 亚洲精品人人| 久久久久久久久久久妇女| 69堂精品视频在线播放| 激情五月综合| 精品黄色一级片| 中文字幕成人| 亚洲高清毛片| 精品久久久网| 日韩有吗在线观看| 亚洲性视频h| 久久久久97| 亚洲区第一页| 99久久久久| 美女国产精品久久久| 亚洲人妖在线| 99精品综合| 国产一区三区在线播放| 日本免费在线视频不卡一不卡二| 免费av一区| 国产高潮在线| 免费在线亚洲欧美| 日韩三级一区| 99国产精品久久久久久久| 国内一区二区三区| 国产亚洲高清一区| 中文字幕亚洲在线观看| 久久影视一区| 亚洲国产欧美日本视频| 国产欧美日韩精品一区二区三区| 国产亚洲综合精品| 激情欧美日韩一区| 日韩精品网站| 中文字幕人成乱码在线观看| 免费日韩成人| 欧美日韩亚洲一区三区| 亚洲日本免费电影| 蜜桃视频一区二区| 丝袜亚洲另类欧美| 99热精品在线| 免费黄色成人| 日韩综合精品| 一本大道色婷婷在线| 国产成人在线中文字幕| 国产亚洲字幕| 青草国产精品| 日韩精品免费一区二区夜夜嗨 | 特黄毛片在线观看| 久久精品色播| 红杏一区二区三区| 久久亚洲人体| 久久精品色播| 国际精品欧美精品| 精品一区二区三区中文字幕视频| 国产精品美女午夜爽爽| 国产精品伦一区二区| 国产精品亚洲综合在线观看| 国产精品最新自拍| 欧美日韩中出| 国产日韩视频| 国产欧美日韩| 国产精品多人| 久久亚州av| 手机在线电影一区| 日韩深夜视频| 亚洲高清成人| 欧美日韩视频| 麻豆9191精品国产| 亚洲九九精品| 欧美亚洲网站| 乱一区二区av| 91亚洲成人| 成人日韩精品| 999精品在线| 午夜国产精品视频免费体验区| 亚洲视频www| 婷婷久久免费视频| 国产精品亚洲欧美一级在线| 精品国产欧美日韩| 色天使综合视频| 亚洲免费激情| 日韩一区二区三免费高清在线观看| 日本午夜精品视频在线观看| 国产福利一区二区精品秒拍 | 福利一区和二区| 欧美成a人免费观看久久| 五月婷婷亚洲| 日韩精品欧美精品| 激情中国色综合| 国产91精品对白在线播放| 久久xxxx精品视频| 欧美日本久久| av资源亚洲| 亚洲免费影院| 国产精品久久久久久久久久齐齐| 激情国产在线| 亚洲视频播放| 国产精品主播| 日韩欧美国产精品综合嫩v| 国产亚洲亚洲| 国产高清亚洲| 欧美日韩在线二区| 日韩一区二区三区四区五区| 久久免费精品| 亚洲精品午夜av福利久久蜜桃| 日韩精品导航| 中文字幕人成乱码在线观看| 亚洲神马久久| 国产精品久久777777毛茸茸| 91精品啪在线观看国产18| 最新国产精品视频| 精品精品久久| 丝袜美腿亚洲色图| 欧美精品导航| 久久人人97超碰国产公开结果| 亚洲精品国产精品粉嫩| 国产一区调教| 蜜臀av国产精品久久久久| 老牛国内精品亚洲成av人片| 午夜免费一区| 国产欧美二区| 999在线观看精品免费不卡网站| 久久不见久久见中文字幕免费| 激情偷拍久久| 你懂的国产精品| 日本大胆欧美人术艺术动态| 精品亚洲免a| 亚洲伊人精品酒店| 日韩精品电影| 91精品啪在线观看国产爱臀| 久久黄色影院| 久久爱www成人| 首页国产欧美日韩丝袜| а√在线中文在线新版| 欧美伊人久久| 国产亚洲一区在线| 日韩在线欧美| 国产精品极品在线观看|