最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java優(yōu)先隊列的創(chuàng)建與使用詳解

 更新時間:2024年08月01日 09:21:44   作者:蒲公英的歲月  
這篇文章主要介紹了Java優(yōu)先隊列的創(chuàng)建與使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java優(yōu)先隊列的創(chuàng)建與使用

最近刷到了力扣的第347題.前K個高頻元素,由于之前一直用C++刷題,對于Java的語法還有些生疏,這道題目需要使用優(yōu)先隊列解題,一下子不知道怎么創(chuàng)建了。

首先在Java中優(yōu)先隊列是由PriorityQueue實現(xiàn)Queue的接口,可以對隊列中的元素按照大小順序進行排序,對于隊列中的元素,可以是基本數(shù)據(jù)類型的包裝類,也可以是自定義的類。

1.基本數(shù)據(jù)類型作為隊列元素

我們以Integer,整數(shù)類型的包裝類為例,構(gòu)造一個優(yōu)先隊列

Queue<Integer>que = new PriorityQueue<>();
que.add(2);
que.add(1);
que.add(3);
//在這種默認的構(gòu)造方式下,隊列中的元素是從小到大排序的
//隊列中元素順序依次為1,2,3

如果要構(gòu)造最大優(yōu)先隊列,可以使用lambda表達式

代碼如下所示:

//注意這里return x1-x2為最小優(yōu)先隊列,x2-x1為最大優(yōu)先隊列
Queue<Integer>que = new PriorityQueue<>((x1,x2)->{return x2-x1;});
que.add(2);
que.add(1);
que.add(3);
//此時隊列中的元素依次為3,2,1

2.自定義數(shù)據(jù)類型作為隊列元素

假設(shè)我們需要使用Map<Integer,Integer>來對出現(xiàn)過的整數(shù)統(tǒng)計出現(xiàn)過的次數(shù),即按照Map的值進行排序,應(yīng)該如何做呢?

看如下代碼:

Map<Integer,Integer>map = new HashMap<>();
//....整數(shù)出現(xiàn)次數(shù)進行統(tǒng)計,假設(shè)已經(jīng)全部統(tǒng)計進入map中
//用一個集合來獲取map中的所有鍵值對
Set<Map.Entry<Integer,Integer>> set = map.entrySet();
//創(chuàng)建優(yōu)先隊列 同樣使用lambda表達式,getValue()函數(shù)用于獲取map中的值
//x1-x2即按照升序,是最小優(yōu)先隊列
Queue<Map.Entry<Integer,Integer>>que = new PriorityQueue<>((x1,x2)->{return x1.getValue()-x2.getValue();})
//再把Set中的鍵值對加入que中 則元素按照值的升序排列在隊列que中
for(Map.Entry<Integer,Integer> en:set){
que.add(en); //或que.offer(en);
}

使用Map<Integer,Integer>類型創(chuàng)建優(yōu)先隊列的過程如上所示,如果是一些自定義的類,比如學(xué)生的學(xué)號,年齡,進行排序,同樣可以這樣操作,關(guān)于PriorityQueue的方法可以查看java api手冊

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot Nacos實現(xiàn)自動刷新

    SpringBoot Nacos實現(xiàn)自動刷新

    這篇文章主要介紹了SpringBoot Nacos實現(xiàn)自動刷新,Nacos(Dynamic Naming and Configuration Service)是阿里巴巴開源的一個動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺
    2023-01-01
  • MyBatis與Hibernate的比較

    MyBatis與Hibernate的比較

    Hibernate 與Mybatis都是流行的持久層開發(fā)框架,但Hibernate開發(fā)社區(qū)相對多熱鬧些,支持的工具也多,更新也快,當前最高版本4.1.8。而Mybatis相對平靜,工具較少,當前最高版本3.2
    2016-01-01
  • jdk中密鑰和證書管理工具keytool常用命令詳解

    jdk中密鑰和證書管理工具keytool常用命令詳解

    keytool JAVA是個密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關(guān)證書,用于(通過數(shù)字簽名)自我認證(用戶向別的用戶/服務(wù)認證自己)或數(shù)據(jù)完整性以及認證服務(wù)
    2014-01-01
  • 關(guān)于Java單個TCP(Socket)連接發(fā)送多個文件的問題

    關(guān)于Java單個TCP(Socket)連接發(fā)送多個文件的問題

    這篇文章主要介紹了關(guān)于Java單個TCP(Socket)連接發(fā)送多個文件的問題,每次我只能使用一個 Socket 發(fā)送一個文件,沒有辦法做到連續(xù)發(fā)送文件,本文來解決這個問題,需要的朋友可以參考下
    2023-04-04
  • Java中遍歷集合的并發(fā)修改異常解決方案實例代碼

    Java中遍歷集合的并發(fā)修改異常解決方案實例代碼

    當你遍歷集合的同時,又往集合中添加或者刪除元素,就可能報并發(fā)修改異常,下面這篇文章主要給大家介紹了關(guān)于Java中遍歷集合的并發(fā)修改異常解決方案的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Spring Security 安全框架應(yīng)用原理解析

    Spring Security 安全框架應(yīng)用原理解析

    這篇文章主要介紹了Spring Security 安全框架應(yīng)用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解

    SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解

    這篇文章主要介紹了SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解,需要的朋友可以參考下
    2020-02-02
  • Java中的snowflake算法詳解

    Java中的snowflake算法詳解

    這篇文章主要介紹了Java中的snowflake算法詳解,Snowflake算法產(chǎn)生是為了滿足Twitter每秒上萬條消息的請求,每條消息都必須分配一條唯一的id,這些id還需要一些大致的順序,并且在分布式系統(tǒng)中不同機器產(chǎn)生的id必須不同,需要的朋友可以參考下
    2023-08-08
  • Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程

    Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+mysql+maven+tomcat實現(xiàn)一個文創(chuàng)商城系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • JAVA多線程線程安全性基礎(chǔ)

    JAVA多線程線程安全性基礎(chǔ)

    這篇文章主要介紹了如何測試Java類的線程安全性,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-08-08

最新評論

鞍山市| 仁怀市| 吴旗县| 开远市| 辽宁省| 罗甸县| 泾源县| 康平县| 兴安盟| 闻喜县| 铁岭县| 竹北市| 班玛县| 稷山县| 昆明市| 上思县| 庐江县| 和平区| 巧家县| 正阳县| 左权县| 道孚县| 治县。| 务川| 临桂县| 蓝山县| 杭锦后旗| 玛纳斯县| 松滋市| 徐水县| 乐安县| 清徐县| 仁化县| 峨边| 玉环县| 宁明县| 巴马| 新津县| 临城县| 九龙县| 洛扎县|