Java中和隊列相關(guān)的基本操作
什么是隊列?
隊列是一種線性數(shù)據(jù)結(jié)構(gòu),隊列中的元素只能先進(jìn)先出;
隊列的出口端叫做隊頭,入口端叫做隊尾。
隊列的基本操作
1.入隊:
只允許在隊尾的位置放入元素,新元素的下一個位置將會成為新的隊尾;
public void ernQueue(irnt elemernt) throws Exceptiorn{ ? ? ? ? if((rear+1)%array.lerngth==frornt){ ? ? ? ? ? ? throw rnew Exceptiorn("隊滿!!!"); ? ? ? ? } ? ? ? ? array[rear]=elemernt; ? ? ? ? rear=(rear+1)%array.lerngth; ? ? }
2.出隊:
類似于入隊,只允許在對頭的位置移除元素,出隊元素的后一個元素將會成為新的對頭;
當(dāng)一個隊列經(jīng)過反復(fù)的入隊和出隊操作,還剩下2個元素,這時又有新元素入隊時,在數(shù)組不擴(kuò)容的
情況下,將隊尾指針重新指向數(shù)組的首位,實現(xiàn)循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)。
public irnt deQueue() throws Exceptiorn{ ? ? ? ? if(frornt==rear){ ? ? ? ? ? ? throw rnew Exceptiorn("隊滿!!!"); ? ? ? ? } ? ? ? ? irnt deElemernt=array[frornt]; ? ? ? ? frornt=(frornt+1)%array.lerngth; ? ? ? ? returrn deElemernt; ? ? }
3.判斷隊滿的情況:
當(dāng)(隊尾下標(biāo)+1)%數(shù)組長度=隊頭下標(biāo)時,隊滿;
隊尾指針指向的位置永遠(yuǎn)空出一位,所以隊列最大容量比數(shù)組長度小1。
package Queue; public class MyQueue { ? ? //定義數(shù)組 ? ? private irnt[] array; ? ? //對頭指針 ? ? private irnt frornt; ? ? //隊尾指針 ? ? private irnt rear; ? ? //定義隊列的構(gòu)造方法(類似數(shù)組) ? ? public MyQueue(irnt capacity){ ? ? ? ? this.array=rnew irnt[capacity]; ? ? } ? ? //入隊操作(elemernt:入隊元素) ? ? public void ernQueue(irnt elemernt) throws Exceptiorn{ ? ? ? ? if((rear+1)%array.lerngth==frornt){ ? ? ? ? ? ? throw rnew Exceptiorn("隊滿!!!"); ? ? ? ? } ? ? ? ? array[rear]=elemernt; ? ? ? ? rear=(rear+1)%array.lerngth; ? ? } ? ? //出隊操作 ? ? public irnt deQueue() throws Exceptiorn{ ? ? ? ? if(frornt==rear){ ? ? ? ? ? ? throw rnew Exceptiorn("隊滿!!!"); ? ? ? ? } ? ? ? ? irnt deElemernt=array[frornt]; ? ? ? ? frornt=(frornt+1)%array.lerngth; ? ? ? ? returrn deElemernt; ? ? } ? ? //輸出隊列 ? ? 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(); ? ? } }
隊列是一種常用的數(shù)據(jù)結(jié)構(gòu),在Java中有多種實現(xiàn)方式。隊列的基本操作包括入隊、出隊、獲取隊首元素和判斷隊列是否為空。入隊操作將元素添加到隊列的末尾,出隊操作將隊首元素移除并返回,peek操作返回隊首元素但不移除,isEmpty操作判斷隊列是否為空。隊列通常采用先進(jìn)先出(FIFO)的原則,即先入隊的元素先出隊。在Java中,可以使用Queue接口及其實現(xiàn)類(如LinkedList和ArrayDeque)來實現(xiàn)隊列。隊列在多線程編程、任務(wù)調(diào)度等場景中有廣泛應(yīng)用。隊列的特性使其適用于需要按照特定順序處理元素的場景,例如消息隊列、任務(wù)隊列等。在使用隊列時,需要注意線程安全性和性能問題。對于多線程環(huán)境,可以使用線程安全的實現(xiàn)類或加鎖來保證操作的原子性。對于性能要求較高的場景,可以選擇合適的隊列實現(xiàn)類或使用其他數(shù)據(jù)結(jié)構(gòu)來替代隊列。
到此這篇關(guān)于Java中和隊列相關(guān)的基本操作的文章就介紹到這了,更多相關(guān)Java隊列的基本操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 一口氣說出Java 6種延時隊列的實現(xiàn)方法(面試官也得服)
- 詳解Java阻塞隊列(BlockingQueue)的實現(xiàn)原理
- java中棧和隊列的實現(xiàn)和API的用法(詳解)
- Java 隊列實現(xiàn)原理及簡單實現(xiàn)代碼
- 解析Java中PriorityQueue優(yōu)先級隊列結(jié)構(gòu)的源碼及用法
- 剖析Java中阻塞隊列的實現(xiàn)原理及應(yīng)用場景
- Java利用Redis實現(xiàn)消息隊列的示例代碼
- java實現(xiàn)消息隊列的兩種方式(小結(jié))
- 詳解Java消息隊列-Spring整合ActiveMq
- java優(yōu)先隊列PriorityQueue中Comparator的用法詳解
相關(guān)文章
SpringBoot創(chuàng)建動態(tài)定時任務(wù)的幾種方式小結(jié)
SpringBoot提供了多種實現(xiàn)定時任務(wù)的方式,包括使用@Scheduled注解、SchedulingConfigurer接口、TaskScheduler接口和Quartz框架,@Scheduled適合簡單的定時任務(wù),文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10Java CGLib動態(tài)代理機(jī)制(全面解析)
下面小編就為大家?guī)硪黄狫ava CGLib動態(tài)代理機(jī)制(全面解析)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法
本篇文章主要介紹了詳解Spring Cloud負(fù)載均衡重要組件Ribbon中重要類的用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03java JSON解析庫Alibaba Fastjson用法詳解
這篇文章主要介紹了java JSON解析庫Alibaba Fastjson用法,結(jié)合實例形式詳細(xì)分析了java JSON解析庫Alibaba Fastjson的基本功能、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04JSON.toJSONString()空字段不忽略修改的問題
這篇文章主要介紹了JSON.toJSONString()空字段不忽略修改的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Spring?Security前后分離校驗token的實現(xiàn)方法
這篇文章主要介紹了Spring?Security前后分離校驗token的方法,本次token生成采取jwt的方式,通過引入jwt依賴文件配置token管理器,對Spring?Security校驗token相關(guān)知識感興趣的朋友一起看看吧2022-02-02