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

Java中和隊(duì)列相關(guān)的基本操作

 更新時(shí)間:2023年09月14日 08:40:28   作者:whO_aMi  
在Java中,隊(duì)列是一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和管理元素。Java提供了Queue接口和其實(shí)現(xiàn)類,包括LinkedList和ArrayDeque等。隊(duì)列的基本操作包括入隊(duì)(enqueue)、出隊(duì)(dequeue)、獲取隊(duì)首元素(peek)和判斷隊(duì)列是否為空(isEmpty)。

什么是隊(duì)列?

隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),隊(duì)列中的元素只能先進(jìn)先出;
隊(duì)列的出口端叫做隊(duì)頭,入口端叫做隊(duì)尾。

隊(duì)列的基本操作

1.入隊(duì):

     只允許在隊(duì)尾的位置放入元素,新元素的下一個(gè)位置將會(huì)成為新的隊(duì)尾;

public void ernQueue(irnt elemernt) throws Exceptiorn{
? ? ? ? if((rear+1)%array.lerngth==frornt){
? ? ? ? ? ? throw rnew Exceptiorn("隊(duì)滿!!!");
? ? ? ? }
? ? ? ? array[rear]=elemernt;
? ? ? ? rear=(rear+1)%array.lerngth;
? ? }

2.出隊(duì):

     類似于入隊(duì),只允許在對(duì)頭的位置移除元素,出隊(duì)元素的后一個(gè)元素將會(huì)成為新的對(duì)頭;
     當(dāng)一個(gè)隊(duì)列經(jīng)過(guò)反復(fù)的入隊(duì)和出隊(duì)操作,還剩下2個(gè)元素,這時(shí)又有新元素入隊(duì)時(shí),在數(shù)組不擴(kuò)容的
     情況下,將隊(duì)尾指針重新指向數(shù)組的首位,實(shí)現(xiàn)循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。

public irnt deQueue() throws Exceptiorn{
? ? ? ? if(frornt==rear){
? ? ? ? ? ? throw rnew Exceptiorn("隊(duì)滿!!!");
? ? ? ? }
? ? ? ? irnt deElemernt=array[frornt];
? ? ? ? frornt=(frornt+1)%array.lerngth;
? ? ? ? returrn deElemernt;
? ? }

3.判斷隊(duì)滿的情況:

     當(dāng)(隊(duì)尾下標(biāo)+1)%數(shù)組長(zhǎng)度=隊(duì)頭下標(biāo)時(shí),隊(duì)滿;
     隊(duì)尾指針指向的位置永遠(yuǎn)空出一位,所以隊(duì)列最大容量比數(shù)組長(zhǎng)度小1。

package Queue;
public class MyQueue {
? ? //定義數(shù)組
? ? private irnt[] array;
? ? //對(duì)頭指針
? ? private irnt frornt;
? ? //隊(duì)尾指針
? ? private irnt rear;
? ? //定義隊(duì)列的構(gòu)造方法(類似數(shù)組)
? ? public MyQueue(irnt capacity){
? ? ? ? this.array=rnew irnt[capacity];
? ? }
? ? //入隊(duì)操作(elemernt:入隊(duì)元素)
? ? public void ernQueue(irnt elemernt) throws Exceptiorn{
? ? ? ? if((rear+1)%array.lerngth==frornt){
? ? ? ? ? ? throw rnew Exceptiorn("隊(duì)滿!!!");
? ? ? ? }
? ? ? ? array[rear]=elemernt;
? ? ? ? rear=(rear+1)%array.lerngth;
? ? }
? ? //出隊(duì)操作
? ? public irnt deQueue() throws Exceptiorn{
? ? ? ? if(frornt==rear){
? ? ? ? ? ? throw rnew Exceptiorn("隊(duì)滿!!!");
? ? ? ? }
? ? ? ? irnt deElemernt=array[frornt];
? ? ? ? frornt=(frornt+1)%array.lerngth;
? ? ? ? returrn deElemernt;
? ? }
? ? //輸出隊(duì)列
? ? public void output(){
? ? ? ? for(irnt i=frornt;i!=rear;i=(i+1)%array.lerngth){
? ? ? ? ? ? System.out.prirnt(array[i]+" ");
? ? ? ? }
? ? }
? ? public static void mairn(Strirng[] args) throws Exceptiorn{
? ? ? ? MyQueue myQueue=rnew MyQueue(6);
? ? ? ? myQueue.ernQueue(1);
? ? ? ? myQueue.ernQueue(2);
? ? ? ? myQueue.ernQueue(3);
? ? ? ? myQueue.ernQueue(4);
? ? ? ? myQueue.ernQueue(5);
? ? ? ? myQueue.deQueue();
? ? ? ? myQueue.deQueue();
? ? ? ? myQueue.ernQueue(6);
? ? ? ? myQueue.ernQueue(7);
? ? ? ? myQueue.output();
? ? }
}

 隊(duì)列是一種常用的數(shù)據(jù)結(jié)構(gòu),在Java中有多種實(shí)現(xiàn)方式。隊(duì)列的基本操作包括入隊(duì)、出隊(duì)、獲取隊(duì)首元素和判斷隊(duì)列是否為空。入隊(duì)操作將元素添加到隊(duì)列的末尾,出隊(duì)操作將隊(duì)首元素移除并返回,peek操作返回隊(duì)首元素但不移除,isEmpty操作判斷隊(duì)列是否為空。隊(duì)列通常采用先進(jìn)先出(FIFO)的原則,即先入隊(duì)的元素先出隊(duì)。在Java中,可以使用Queue接口及其實(shí)現(xiàn)類(如LinkedList和ArrayDeque)來(lái)實(shí)現(xiàn)隊(duì)列。隊(duì)列在多線程編程、任務(wù)調(diào)度等場(chǎng)景中有廣泛應(yīng)用。隊(duì)列的特性使其適用于需要按照特定順序處理元素的場(chǎng)景,例如消息隊(duì)列、任務(wù)隊(duì)列等。在使用隊(duì)列時(shí),需要注意線程安全性和性能問(wèn)題。對(duì)于多線程環(huán)境,可以使用線程安全的實(shí)現(xiàn)類或加鎖來(lái)保證操作的原子性。對(duì)于性能要求較高的場(chǎng)景,可以選擇合適的隊(duì)列實(shí)現(xiàn)類或使用其他數(shù)據(jù)結(jié)構(gòu)來(lái)替代隊(duì)列。

到此這篇關(guān)于Java中和隊(duì)列相關(guān)的基本操作的文章就介紹到這了,更多相關(guān)Java隊(duì)列的基本操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?超詳細(xì)講解十大排序算法面試無(wú)憂

    Java?超詳細(xì)講解十大排序算法面試無(wú)憂

    這篇文章主要介紹了Java常用的排序算法及代碼實(shí)現(xiàn),在Java開發(fā)中,對(duì)排序的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。那Java有哪些排序算法呢?本文小編就來(lái)詳細(xì)說(shuō)說(shuō)Java常見的排序算法,需要的朋友可以參考一下
    2022-04-04
  • SpringBoot創(chuàng)建動(dòng)態(tài)定時(shí)任務(wù)的幾種方式小結(jié)

    SpringBoot創(chuàng)建動(dòng)態(tài)定時(shí)任務(wù)的幾種方式小結(jié)

    SpringBoot提供了多種實(shí)現(xiàn)定時(shí)任務(wù)的方式,包括使用@Scheduled注解、SchedulingConfigurer接口、TaskScheduler接口和Quartz框架,@Scheduled適合簡(jiǎn)單的定時(shí)任務(wù),文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)

    下面小編就為大家?guī)?lái)一篇Java CGLib動(dòng)態(tài)代理機(jī)制(全面解析)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法

    詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法

    本篇文章主要介紹了詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java JSON解析庫(kù)Alibaba Fastjson用法詳解

    java JSON解析庫(kù)Alibaba Fastjson用法詳解

    這篇文章主要介紹了java JSON解析庫(kù)Alibaba Fastjson用法,結(jié)合實(shí)例形式詳細(xì)分析了java JSON解析庫(kù)Alibaba Fastjson的基本功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • JSON.toJSONString()空字段不忽略修改的問(wèn)題

    JSON.toJSONString()空字段不忽略修改的問(wèn)題

    這篇文章主要介紹了JSON.toJSONString()空字段不忽略修改的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Servlet3.0實(shí)現(xiàn)文件上傳的方法

    Servlet3.0實(shí)現(xiàn)文件上傳的方法

    本篇文章主要介紹了Servlet實(shí)現(xiàn)文件上傳的方法,所謂文件上傳就是將本地的文件發(fā)送到服務(wù)器中保存。有興趣的可以了解一下。
    2017-03-03
  • Spring?Security前后分離校驗(yàn)token的實(shí)現(xiàn)方法

    Spring?Security前后分離校驗(yàn)token的實(shí)現(xiàn)方法

    這篇文章主要介紹了Spring?Security前后分離校驗(yàn)token的方法,本次token生成采取jwt的方式,通過(guò)引入jwt依賴文件配置token管理器,對(duì)Spring?Security校驗(yàn)token相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-02-02
  • java 枚舉類中的valueOf用法說(shuō)明

    java 枚舉類中的valueOf用法說(shuō)明

    這篇文章主要介紹了java 枚舉類中的valueOf用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot集成tkmapper及基本使用教程

    springboot集成tkmapper及基本使用教程

    tk.mybatis可以節(jié)省程序員的大部分時(shí)間,對(duì)于程序員來(lái)說(shuō)關(guān)于一張表的操作無(wú)非就是增刪改查,tk.mybatis提供了一些基本操作的SQL語(yǔ)句,比如說(shuō)按表的主鍵查詢、刪除等基本操作,我們接下來(lái)就來(lái)介紹一些springboot集成tkmapper及基本使用
    2022-11-11

最新評(píng)論