Java中隊列和堆棧


隊列(queue),先進先出(First in first out,FIFO)。

堆棧(stack),后進先出(Last in first out,LIFO)。

      Java中有Stack這個類,但是不推薦使用。通常使用Deque來完成隊列和堆棧的功能。

      Deque是一個線性表接口,可以兩端進行元素的插入和刪除。Deque是“Double ended Queue”的縮寫,Deque讀音[dɛk] 。使用Deque接口提供的方法就可以完成隊列“先進先出”和堆棧“后進先出”的功能:

隊列

offer(E e) --- 向隊列尾加入元素

E poll() --- 獲取隊列頭部元素,並從隊列中刪去

堆棧

push(E e) --- 向堆棧中壓入元素

E pop() --- 獲取棧頂元素,並從堆棧中刪除

 

Deque是個接口,其實現類有:

  • ArrayDeque,使用“數組”存儲數據
  • LinkedList,使用“鏈表”存儲數據
  • ConcurrentLinkedDeque,線程安全的LinkedList

數據檢索多的用ArrayDeque;數據需要頻繁插入、更新,則用LinkedList;多線程操作使用ConcurrentLinkedDeque。

代碼示例:

   1: Deque<String> queue = new LinkedList<String>();
   2: queue.offer("data1");    //隊列尾部加入元素
   3: queue.offer("data2");
   4: queue.offer("data3");
   5: System.out.println(queue.poll());    //取得隊首元素,並從隊列中刪去
   6:  
   7: Deque<String> stack = new LinkedList<String>();
   8: stack.push("element1");    //向棧頂壓入元素
   9: stack.push("element2");
  10: stack.push("element3");
  11: System.out.println(queue.pop());    //取得棧頂元素,並從棧頂刪去


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM