欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

代碼如下所示:

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

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

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

看如下代碼:

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

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

總結(jié)

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

相關(guān)文章

  • 基于SSM?集成?Freemarker模板引擎的方法

    基于SSM?集成?Freemarker模板引擎的方法

    這篇文章主要介紹了SSM?集成?Freemarker模板引擎,SSM?架構(gòu)下一般采用?Freemarker,Spring?Boot?架構(gòu)下一般推薦采用?Thymeleaf?模板引擎,需要的朋友可以參考下
    2022-01-01
  • SpringBoot整合RocketMQ實(shí)現(xiàn)發(fā)送同步消息

    SpringBoot整合RocketMQ實(shí)現(xiàn)發(fā)送同步消息

    RocketMQ 是一款開(kāi)源的分布式消息中間件,由阿里巴巴開(kāi)源,它具有高可用性、高性能、低延遲等特點(diǎn),廣泛應(yīng)用于阿里巴巴集團(tuán)內(nèi)部以及眾多外部企業(yè)的業(yè)務(wù)系統(tǒng)中,本文給大家介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)發(fā)送同步消息,需要的朋友可以參考下
    2024-04-04
  • 緩存工具類ACache使用方法詳解

    緩存工具類ACache使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了緩存工具類ACache的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 詳解Spring Boot配置使用Logback進(jìn)行日志記錄的實(shí)戰(zhàn)

    詳解Spring Boot配置使用Logback進(jìn)行日志記錄的實(shí)戰(zhàn)

    本篇文章主要介紹了詳解Spring Boot配置使用Logback進(jìn)行日志記錄的實(shí)戰(zhàn),具有一定的參考價(jià)值,有興趣的朋友可以了解一下
    2017-07-07
  • SpringBoot結(jié)合Redis實(shí)現(xiàn)接口冪等性的示例代碼

    SpringBoot結(jié)合Redis實(shí)現(xiàn)接口冪等性的示例代碼

    本文主要介紹了SpringBoot結(jié)合Redis實(shí)現(xiàn)接口冪等性的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Java中比較Long類型是否相等代碼示例

    Java中比較Long類型是否相等代碼示例

    在Java編程中l(wèi)ong是一種數(shù)據(jù)類型,用于表示整數(shù)值,下面這篇文章主要給大家介紹了關(guān)于Java中比較Long類型是否相等的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Java Zip文件讀寫操作詳解

    Java Zip文件讀寫操作詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java ZipInputstream、ZipOutputStream實(shí)現(xiàn)獲取每個(gè)文件中的內(nèi)容與寫入內(nèi)容,感興趣的可以動(dòng)手嘗試一下
    2022-11-11
  • Java開(kāi)發(fā)推薦使用的JDK版本以及對(duì)比詳細(xì)分析

    Java開(kāi)發(fā)推薦使用的JDK版本以及對(duì)比詳細(xì)分析

    這篇文章詳細(xì)分析了JDK17和JDK21作為當(dāng)前推薦版本的優(yōu)缺點(diǎn),并對(duì)比了它們與JDK8和JDK11的差異,文中介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2025-04-04
  • springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    這篇文章主要介紹了springboot+thymeleaf+shiro標(biāo)簽的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java 中ThreadLocal 的正確用法

    java 中ThreadLocal 的正確用法

    這篇文章主要介紹了java 中ThreadLocal 的正確用法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評(píng)論