Java集合--隊列

1. 隊列簡介

  Stack屬於先進後出(First In Last Out、FILO), 而隊列本質上指的是先進先出(First In First Out、FIFO), 從本質上來講隊列與棧是一組相對的存儲結構,同時在許多實際的項目開發裏面,隊列都發揮着非常重要的作用,在java類集裏面提供有兩個隊列: Queue、Deque (是Queue子接口)。

  • public interface Deque extends Queue
  • public interface Queue extends Collection
      類結構如下圖所示:在這裏插入圖片描述

  隊列的出現是爲了解決資源緊張的設計問題,因爲資源不足,就拿店面來講,只有一個售賣窗口,但是買的人太多了,所以只能夠進行排隊依次梳理,隊列的出現解決的是數據緩衝的問題。

2. Queue接口

  Queue是隊列實現的標準的操作接口,在這個接口裏面提供有如下的隊列操作方法。
  如下圖所示:在這裏插入圖片描述

No. 方法名稱 類型 描述
01 boolean add(E e) 方法 【Exception】增加隊列數據,追加失敗拋出異常
02 boolean offer(E e) 方法 向隊列追加數據,追加成功返回true,否則返回false
03 E remove() 方法 【Exception】從裏面取出數據的同時刪除
04 E poll() 方法 從隊列中獲取數據

  Queue是一個接口,如果想要獲取Queue對象的實例,那麼就必須依靠子類,可以使用LinkedList、PriorityQueue 兩個子類。
  如下圖所示:在這裏插入圖片描述在這裏插入圖片描述

  此時可以發現,最早保存的數據最先進行了取出,而最晚保存的數據最後進行了取出,由於LinkedList是基於鏈表的實現,所以此時並不會改變存儲的數據順序。優先隊列的數據將進行排序,隨後將排序後的內容進行依次的輸出。

3. Deque接口

  Queue是隊列操作的標準形式,它採用的模式就是FIFO,而與Queue對應的是Deque接口,這個接口是Queue子接口,而且它所實現的隊列,擁有雙向的操作能力,可以通過隊首實現數據的增加與彈出,也可以在隊尾上實現數據的增加與彈出。Deque接口裏面有兩個常見的子類: ArrayDeque、 LinkedList, 觀察ArrayDeque 繼承結構。
在這裏插入圖片描述

  使用Deque的時候一定包含有Queue接口中所有的方法,同時也有自己擴充的方法。默認隊列大小爲16。
  方法如下圖所示:在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章