一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 解析Java中的隊列和用LinkedList集合模擬隊列的方法

解析Java中的隊列和用LinkedList集合模擬隊列的方法

2020-01-02 14:22zinss26914 JAVA教程

這篇文章主要介紹了解析Java中的隊列和用LinkedList集合模擬隊列的方法,相關算法的實現也是ACM中的常見題目,需要的朋友可以參考下

API中對隊列的說明:
 

?
1
2
public interface Queue<E>
extends Collection<E>

在處理元素前用于保存元素的 collection。除了基本的 Collection 操作外,隊列還提供其他的插入、提取和檢查操作。每個方法都存在兩種形式:一種拋出異常(操作失敗時),另一種返回一個特殊值(null 或 false,具體取決于操作)。插入操作的后一種形式是用于專門為有容量限制的 Queue 實現設計的;在大多數實現中,插入操作不會失敗。

解析Java中的隊列和用LinkedList集合模擬隊列的方法

隊列通常(但并非一定)以 FIFO(先進先出)的方式排序各個元素。不過優先級隊列和 LIFO 隊列(或堆棧)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,后者按 LIFO(后進先出)的方式對元素進行排序。無論使用哪種排序方式,隊列的頭 都是調用 remove() 或 poll() 所移除的元素。在 FIFO 隊列中,所有的新元素都插入隊列的末尾。其他種類的隊列可能使用不同的元素放置規則。每個 Queue 實現必須指定其順序屬性。
如果可能,offer 方法可插入一個元素,否則返回 false。這與 Collection.add 方法不同,該方法只能通過拋出未經檢查的異常使添加元素失敗。offer 方法設計用于正常的失敗情況,而不是出現異常的情況,例如在容量固定(有界)的隊列中。
remove() 和 poll() 方法可移除和返回隊列的頭。到底從隊列中移除哪個元素是隊列排序策略的功能,而該策略在各種實現中是不同的。remove() 和 poll() 方法僅在隊列為空時其行為有所不同:remove() 方法拋出一個異常,而 poll() 方法則返回 null。
element() 和 peek() 返回,但不移除,隊列的頭。
Queue 接口并未定義阻塞隊列的方法,而這在并發編程中是很常見的。BlockingQueue 接口定義了那些等待元素出現或等待隊列中有可用空間的方法,這些方法擴展了此接口。
Queue 實現通常不允許插入 null 元素,盡管某些實現(如 LinkedList)并不禁止插入 null。即使在允許 null 的實現中,也不應該將 null 插入到 Queue 中,因為 null 也用作 poll 方法的一個特殊返回值,表明隊列不包含元素。
Queue 實現通常未定義 equals 和 hashCode 方法的基于元素的版本,而是從 Object 類繼承了基于身份的版本,因為對于具有相同元素但有不同排序屬性的隊列而言,基于元素的相等性并非總是定義良好的。

 

在java里使用隊列可以用LinkedList集合進行模擬


方法
使用LinkedList集合,并使用其中的addLast、removeFirst、isEmpty等API集體模擬隊列操作

入隊列

?
1
void addLast(E e); // 將元素插入此列表的結尾

 

出隊列

?
1
E removeFirst(); // 移除并返回列表的第一個元素

 

判空

?
1
boolean isEmpty(); // 判斷隊列是否為空 

 

示例代碼

    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package coreJavaOne;
   
  import java.util.LinkedList;
  import java.util.NoSuchElementException;
   
  public class SimulateQueue {
    private LinkedList<Integer> queue = new LinkedList<Integer>();
   
    public boolean isEmpty() {
      return this.queue.isEmpty();
    }
   
    public void enQueue(int data) {
      this.queue.addLast(data);
    }
   
    public int deQueue() throws NoSuchElementException {
      return this.queue.removeFirst();
    }
   
    public static void main(String[] args) {
      SimulateQueue q = new SimulateQueue();
   
      q.enQueue(1);
      q.enQueue(2);
      q.enQueue(3);
   
      while (! q.isEmpty()) {
        int data = q.deQueue();
        System.out.println(data);
      }
    }
  }

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 秋霞午夜 | 波多野结衣52部合集在线观看 | 青涩体验在线观看未删减 | 爸爸干女儿小说 | 无颜之月5集全免费看无删除 | 日本道高清 | 美女林柏欣21p人体之仓之梦 | 大好硬好深好爽想要视频 | 香蕉免费一区二区三区在线观看 | 久久精品黄AA片一区二区三区 | 翁公与小莹在客厅激情 | 亚洲国产自拍在线 | 91大片淫黄大片在线天堂 | 精品日韩一区二区三区 | 四虎网站网址 | 香蕉在线播放 | 国产情侣偷国语对白 | 亚洲午夜精品久久久久久成年 | 女教师系列三上悠亚在线观看 | 色悠久久久久综合网小说 | 精品亚洲一区二区三区在线播放 | 金莲一级淫片aaaaaa | 国产免费午夜 | 成年美女黄网色大观看全 | 国产色视频一区二区三区 | 四虎院影永久在线观看 | 色综合天天综合网站中国 | 99视频全部看免费观 | 亚洲性网 | 草莓绿巨人香蕉茄子芭乐 | 恩爱夫妇交换小说 | 国产亚洲人成网站在线观看不卡 | 日本xxwwwxxxx | 午夜一区二区福利视频在线 | 国产日韩精品一区二区 | 国产成人激情视频 | 青青草原免费在线视频 | www日本高清视频 | 91素人约啪| 俄罗斯女人与公拘i交酡 | 欧美疯狂做爰xx |