大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java基礎學習:什么是java優先隊列

Java基礎學習:什么是java優先隊列

更新時間:2020-04-08 12:27:14 來源:動力節點 瀏覽2562次


    該PriorityQueue中是很重要的一個Java的建立在無界優先級隊列和優先級堆的API。本文通過適當的代碼示例介紹了有關此API及其使用的一些復雜信息。


    概觀


    的的PriorityQueue類是一部分的java.util包,是一個通用的實現Java中的基于優先級的隊列。甲隊列基本上是一個數據結構,用于定義特定規范來插入和從存放物品的檢索的處理。這個想法非常類似于許多人站在隊列中說,獲得一張票。站在隊列中的第一個人獲得了獲得機票的第一個機會,最后一個人獲得了一個機會。人們被添加到隊列的末尾或尾端。向隊列添加項目在技術上稱為入隊過程,從隊列中刪除的項目來自行中的第一個項目。這被稱為出隊。我們的想法是以FIFO(先進先出)的方式對元素進行排序。


    現在,這是最簡單的架構,并且緊密地定義了隊列實際意味著什么以及如何在計算機中進行模擬。甲商店通常由一個簡單的陣列,其中所述存儲和檢索過程有這樣的定義范數表示。優先級隊列強加了一些特殊規范。我們將看到更多的內容。


    Java實現隊列


    JavaAPI在java.util包中具有通用接口名稱Queue<E>。這是JavaCollectionFrameworkAPI的一部分,旨在在處理之前保存元素。作為Collection的一部分,它具有所有基本的Collection操作。特定于其身份的操作涉及插入,提取和檢查存儲在其中的元素。這些操作中的每一個都有兩種不同的形式,例如,如果操作失敗則拋出異常,另一種返回特殊值,例如null或false,具體取決于操作。注意與典型隊列不同,JavaQueue的具體實現不一定以FIFO方式排序元素。對于基于優先級的隊列尤其如此,其中元素的排序是根據提供的比較器或自然順序完成的。但無論順序如何,remove()或poll()方法將始終檢索隊列頭部的元素。這兩種不太可能的方法之間的具體區別似乎是一個類似的方法是一個拋出異常(NoSuchElementException)失敗,而后者返回(null),一個特殊的值。


Java基礎學習:什么是java優先隊列


    請注意,Queue<E>接口不適合在并發編程中使用,因為它沒有定義阻塞隊列方法,其中enqueue和dequeue進程等待元素出現在隊列中或大小可用。有一個名為BlockingQueue<E>的特定接口,它擴展了Queue<E>接口并解決了這些問題。


    有一個名為AbstractQueue<E>的抽象類,它提供了一些隊列操作的部分實現。所述的PriorityQueue<E>類是這個抽象類的直接延伸。


    優先級隊列


    優先級隊列的Java實現是一種特殊類型的隊列,其中元素的排序由其自然排序原則確定或根據創建期間提供的比較器定制。我們在構造期間調用的構造函數決定了與優先級隊列一起使用的排序原則。與Queue<E>不同,它不允許null元素,但是某些實現-例如LinkedList-do也不禁止插入null元素。但是,PriorityQueue<E>根本不允許使用null元素。如果優先級隊列是根據自然順序構造的,則會拋出任何不可比較的元素插入ClassCastException。


    它被聲明是無限的并且基于優先級堆。雖然隊列的大小被稱為無界,但是有一個內部容量來確定數組的大小。插入元素時,此大小會自動增大。但是,沒有具體說明尺寸增加的原則的細節。


    有七種類型的重載構造函數,我們可以通過它們設置參數來指定隊列的初始容量,為Comparator提供指定元素的自定義排序,或者使用無參數構造函數接受默認值。


    PriorityQueue中()


    PriorityQueue(intinitialCapacity)


    PriorityQueue(intinitialCapacity,Comparator<?SuperE>comparator)


    PriorityQueue(Commection<?extendsE>c)


    PriorityQueue(比較器<?SuperE>比較器)


    PriorityQueue(PriorityQueue<?extendsE>c)


    PriorityQueue(SortedSet<?extendsE>c)


    與Queue<E>類似,PriorityQueue<E>也不同步,因此應在并發編程中謹慎使用。但是,有一個同步替代它,稱為PriorityBlockingQueue<E>。這與PriorityQueue<E>的工作方式相同,只是具有線程安全的附加資格。


    PriorityQueue<E>中定義的操作與Queue<E>相同,但增加了一些。


Java基礎學習:什么是java優先隊列


    快速示例#1


    讓我們用一個簡單的程序實現PriorityQueue<E>的一些操作。


Java基礎學習:什么是java優先隊列


    產量


Java基礎學習:什么是java優先隊列


    快速示例#2


    這是另一個自定義比較器的快速示例。


Java基礎學習:什么是java優先隊列


    產量


Java基礎學習:什么是java優先隊列


    結論


    優先級隊列的附加規范是從列表中刪除的項具有最高優先級。Java將優先級規則強加給普通隊列的方式是附加元素的排序原則。此訂單可以根據程序員的要求進行自定義,也可以設置為默認。這是Java中優先級隊列實現的本質。


  以上就是動力節點java培訓機構的小編針對“Java基礎學習:什么是java優先隊列”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩欧美无线在码 | 欧美激情伦妇在线观看 | 91手机看片国产福利精品 | 95视频在线观看在线分类h片 | 亚洲乱强| 九九99视频在线观看视频观看 | 免费一看一级毛片 | 涩色网站 | 一本影院 | 久久视频精品36线视频在线观看 | 四虎永久免费影院在线 | 九九久久久久午夜精选 | 高清影院|精品秒播3 | 久久黄色网 | 国产欧美日韩一区二区三区视频 | 99国产精品久久久久久久... | 美女视频很黄很暴黄是免费的 | 97视频免费人人观看人人 | 视频二区 素人 欧美 日韩 | 亚洲一区免费在线观看 | 国产欧美精品午夜在线播放 | 成人免费一区二区三区在线观看 | 欧美日韩高清一区 | 精品精品国产自在香蕉网 | 99亚洲精品高清一二区 | 成人影院免费观看 | 久久伊人最新 | 一本清高清dvd日本播放器 | 亚洲国产婷婷综合在线精品 | 欧美啊v在线观看 | 中国精品白嫩bbwbbw | 国产精品国产欧美综合一区 | 视频国产在线 | 奇米影视在线观看 | 青草免费 | 亚洲一区二区精品推荐 | 日本永久免费 | 一区二区三区四区国产精品 | 九九99视频在线观看视频观看 | 亚洲欧洲久久久精品 | 国产精品久久久久桃色tv |