电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java數組隊列概念與用法實例分析

瀏覽:100日期:2022-09-04 13:37:52

本文實例講述了Java數組隊列概念與用法。分享給大家供大家參考,具體如下:

一.隊列的概念

(1)隊列也是一種線性結構

(2)相比數組,隊列對應的操作是數組的子集

(3)只允許在一端插入數據操作,在另一端進行刪除數據操作,進行插入操作的一端稱為隊尾(入隊列),進行刪除操作的一端稱為隊頭(出隊列)

(4)隊列是一種先進先出的數據結構(FIFO)

此處我們先來學習一下順序隊列 ,順序隊列 就是用數組實現:比如有一個n個元素的隊列,數組下標0的一端是隊頭,入隊操作就是通過數組下標一個個順序追加,不需要移動元素,但是如果刪除隊頭元素,后面的元素就要往前移動,對應的時間復雜度就是O(n)。

Java數組隊列概念與用法實例分析

對于隊列,我們關注的相關實現如下:

Java數組隊列概念與用法實例分析

二、代碼實現

對于該節的相關代碼,我們新建一個package(Queue),同時為了理解方便,此時把動態數組相關代碼拷貝到該包中。

1.先創建一個Queue接口,里面定義上面所述的方法

package Queue;public interface Queue<E> { //獲取隊列中元素個數 int getSize(); //隊列中元素是否為空 boolean isEmpty(); //入隊列 void enqueue(E e); //出隊列 E dequeue(); //獲取隊首元素 E getFront();}

2.創建一個類ArrayQueue實現Queue接口并重寫Object類的toString()方法

package Queue;public class ArrayQueue<E> implements Queue<E> { private DynamicArray<E> array; //構造函數,傳入隊列的容量capacity構造函數 public ArrayQueue(int capacity) { array = new DynamicArray<E>(capacity); } //無參構造函數,默認隊列的容量capacity=10 public ArrayQueue() { array = new DynamicArray<E>(); } //獲取隊列中元素數據是否為空 @Override public boolean isEmpty() { return array.isEmpty(); } //獲取隊列中元素個數 @Override public int getSize() { return array.getSize(); } //獲取隊列的容量 public int getCapacity() { return array.getCapacity(); } //入隊操作 @Override public void enqueue(E e) { array.addLast(e); } //出隊操作 @Override public E dequeue() { return array.removeFirst(); } //獲取隊首元素 @Override public E getFront() { return array.getFirst(); } //重寫object類的toString方法 @Override public String toString() { StringBuilder res = new StringBuilder(); res.append('Queue:'); res.append('front [');//體現左側為隊首 for (int i = 0; i < array.getSize(); i++) { res.append(array.get(i)); if (i != array.getSize() - 1) {res.append(','); } } res.append('] tail');//體現右側為隊尾 return res.toString(); }}

3.測試

新建一個TestMain類,添加一個main函數來測試我們編寫好的ArrayQueue類

相關代碼如下:

package Queue;public class TestMain { public static void main(String[] args) { ArrayQueue<Integer> queue = new ArrayQueue<Integer>(); for (int i = 0; i < 10; i++) { queue.enqueue(i); System.out.println(queue); if(i%3==2){//每添加3個元素出隊列一個queue.dequeue();System.out.println(queue); } } }}

對于第7行代碼是測試入隊列操作的,第10、11行代碼的意思是每添加3個元素出隊列一個元素。結果為:

Java數組隊列概念與用法實例分析

三、數組隊列的復雜度分析

Java數組隊列概念與用法實例分析

對于出隊的時間復雜度為O(n)的解釋:

由于實現數組隊列的底層是動態數組,入隊操作就是通過數組下標一個個順序追加,不需要移動元素,但是如果刪除隊頭元素(removeFirst()方法),后面的元素就要往前移動,對應的時間復雜度就是O(n)。這樣當有數組中有大量數據時性能肯定是不好的,下一節我們將進行改進,使得出隊的時間復雜度為O(1)。

源碼地址 https://github.com/FelixBin/dataStructure/tree/master/src/Queue

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
相關文章:
主站蜘蛛池模板: 德州网站开发定制-小程序开发制作-APP软件开发-「两山开发」 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 江苏齐宝进出口贸易有限公司 | 电车线(用于供电给电车的输电线路)-百科 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 噪声治理公司-噪音治理专业隔音降噪公司| 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 许昌奥仕达自动化设备有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 昆山PCB加工_SMT贴片_PCB抄板_线路板焊接加工-昆山腾宸电子科技有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 |