Java實現(xiàn)隊列的三種方法集合
數(shù)組實現(xiàn)隊列
//數(shù)組實現(xiàn)隊列 class queue{ int[] a = new int[5]; int i = 0; //入隊操作 public void in(int m) { a[i++] = m; } // 出隊列操作 取出最前面的值 通過循環(huán)遍歷把所有的數(shù)據(jù)向前一位 public int out() { int index = 0; int temp = a[0]; for(int j = 0;j < i;j++) { a[j] = a[j + 1]; } return temp; } }
ArrayList實現(xiàn)隊列
//集合實現(xiàn)隊列 class queue{ List<Integer> list = new ArrayList<Integer>(); int index = 0; public void in(int n) { list.add(n); index++; } //出隊列操作 //出隊 public int out(){ if(!list.isEmpty()){ index--; return list.remove(0); } return -1; } }
兩個堆棧實現(xiàn)隊列
//兩個堆棧實現(xiàn)一個隊列 class queue3 { Stack<Integer> stackA = new Stack<Integer>(); Stack<Integer> stackB = new Stack<Integer>(); //入隊 public void in(int n) { stackA.push(n); } //出隊 我們把A里面的元素遍歷拿出放入B中 再拿出B中的第一個元素 public int out() { //判斷b棧有沒有元素 有返回false 無返回真 if(stackB.isEmpty()) { while(!stackA.isEmpty()) { stackB.push(stackA.pop()); } } return stackB.pop(); } }
補充知識:java使用鏈表實現(xiàn)隊列
隊列使用Java進行鏈表實現(xiàn),在網(wǎng)上找到了一張圖,很好,借鑒一下
設(shè)置兩個結(jié)點node,front指向隊首元素,rear指向隊尾;
上代碼:
public class LinkedQueue { Node front;//隊頭指針,指向隊頭節(jié)點 Node rail;//隊尾指針,指向隊尾節(jié)點 int size = 0;//記錄隊列長度 //構(gòu)造函數(shù) public LinkedQueue() { front = rail = null; } public boolean isEmpty() { return size == 0 ? true : false; } //添加元素 public boolean addQueue(Object ele) { if (size == 0) { front = new Node(null, ele); rail = front; size++; return true; } Node s = new Node(null, ele); //這塊有個主意的地方,一旦rail設(shè)置了next屬性,因為front節(jié)點與rail節(jié)點指向了同一個node節(jié)點,持有同一個結(jié)點的一個引用,因此front節(jié)點next屬性也被填充 rail.setNext(s); rail = s; size++; return true; } /** * 刪除元素,出隊列 * @return */ public boolean deleteQueue() { if (isEmpty()) { System.out.println("當(dāng)前隊列為空"); return false; } front = front.next; size--; return true; } public static void main(String[] args) { LinkedQueue queue = new LinkedQueue(); queue.addQueue(1); queue.addQueue(2); queue.addQueue(3); queue.deleteQueue(); } } /** * 首先鏈表底層是一個個結(jié)點 */ class Node { Node next; Object element; public Node(Node next, Object element) { this.next = next; this.element = element; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public Object getElement() { return element; } public void setElement(Object element) { this.element = element; } }
以上這篇Java實現(xiàn)隊列的三種方法集合就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- java中用數(shù)組實現(xiàn)環(huán)形隊列的示例代碼
- Java 延遲隊列的常用的實現(xiàn)方式
- 詳解Java中的延時隊列 DelayQueue
- Java 1.8使用數(shù)組實現(xiàn)循環(huán)隊列
- Java特性隊列和棧的堵塞原理解析
- Java實現(xiàn)自定義阻塞隊列
- Java優(yōu)先隊列(PriorityQueue)重寫compare操作
- SpringBoot集成JmsTemplate(隊列模式和主題模式)及xml和JavaConfig配置詳解
- java隊列之queue用法實例分析
- JAVA 實現(xiàn)延遲隊列的方法
- 詳解java中的阻塞隊列
- 一口氣說出Java 6種延時隊列的實現(xiàn)方法(面試官也得服)
- Java阻塞隊列四組API介紹(小結(jié))
- Java中有界隊列的飽和策略(reject policy)原理解析
- Java消息隊列JMS實現(xiàn)原理解析
- java鏈表應(yīng)用--基于鏈表實現(xiàn)隊列詳解(尾指針操作)
- Java循環(huán)隊列原理與用法詳解
- 10分鐘搞定Java并發(fā)隊列
相關(guān)文章
Java中break、continue、return語句的使用區(qū)別對比
這篇文章主要介紹了Java中break、continue、return語句的使用區(qū)別對比,本文用非常清爽簡明的語言總結(jié)了這三個關(guān)鍵字的使用技巧,并用一個實例對比使用結(jié)果,需要的朋友可以參考下2015-06-06Spring Boot+Nginx實現(xiàn)大文件下載功能
相信很多小伙伴,在日常開放中都會遇到大文件下載的情況,大文件下載方式也有很多,比如非常流行的分片下載、斷點下載;當(dāng)然也可以結(jié)合Nginx來實現(xiàn)大文件下載,在中小項目非常適合使用,這篇文章主要介紹了Spring Boot結(jié)合Nginx實現(xiàn)大文件下載,需要的朋友可以參考下2024-05-05mybatis學(xué)習(xí)筆記之mybatis注解配置詳解
本篇文章主要介紹了mybatis學(xué)習(xí)筆記之mybatis注解配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12java天數(shù)計算函數(shù)(當(dāng)前月天數(shù)、某月總天數(shù)及某月剩余天數(shù))4種方法實現(xiàn)代碼
日常開發(fā)中會遇到關(guān)于日期的計算,比如當(dāng)月的天數(shù)、兩日期之間的天數(shù)、當(dāng)月剩余天數(shù)等等,這篇文章主要給大家介紹了關(guān)于java天數(shù)計算函數(shù)(當(dāng)前月天數(shù)、某月總天數(shù)及某月剩余天數(shù))4種方法實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-10-10SpringBoot中動態(tài)更新@Value配置方式
這篇文章主要介紹了SpringBoot中動態(tài)更新@Value配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09Spring中Controller和RestController的區(qū)別詳解
這篇文章主要介紹了Spring中Controller和RestController的區(qū)別詳解,@Controller是標(biāo)識一個Spring類是Spring MVC controller處理器,@Controller類中的方法可以直接通過返回String跳轉(zhuǎn)到j(luò)sp、ftl、html等模版頁面,需要的朋友可以參考下2023-09-09