溫馨提示×

Java數(shù)據(jù)結構之隊列(Queue)詳解

小億
102
2024-01-02 16:45:39
欄目: 編程語言

隊列(Queue)是一種先進先出(FIFO)的數(shù)據(jù)結構,可以在一端插入元素,在另一端刪除元素。在隊列中,插入元素的一端稱為隊尾(rear),刪除元素的一端稱為隊頭(front)。

Java中的Queue接口是一個繼承自Collection接口的子接口,它定義了一些方法來操作隊列。常用的實現(xiàn)類有LinkedList和ArrayDeque。

以下是Queue接口中常用的方法:

  1. enqueue(E e):將元素e插入隊列的隊尾。
  2. dequeue():刪除隊列中的隊頭元素,并返回該元素。
  3. peek():獲取隊頭元素,但不刪除它。
  4. isEmpty():判斷隊列是否為空。
  5. size():獲取隊列中元素的個數(shù)。

LinkedList和ArrayDeque是Java中常用的隊列實現(xiàn)類。它們都實現(xiàn)了Queue接口,因此可以直接使用Queue接口中定義的方法。

  1. LinkedList實現(xiàn)了雙向鏈表,可以作為隊列的實現(xiàn)。它的enqueue(E e)方法將元素插入鏈表的末尾,dequeue()方法刪除鏈表的第一個元素,并返回該元素。

示例代碼:

Queue<Integer> queue = new LinkedList<>();

queue.enqueue(1); // 隊列中插入元素1
queue.enqueue(2); // 隊列中插入元素2

System.out.println(queue.peek()); // 輸出隊頭元素

int num = queue.dequeue(); // 刪除隊頭元素,并返回該元素
System.out.println(num); // 輸出刪除的元素

System.out.println(queue.isEmpty()); // 判斷隊列是否為空
System.out.println(queue.size()); // 輸出隊列中元素的個數(shù)
  1. ArrayDeque是一個雙端隊列的實現(xiàn)類,也可以作為隊列的實現(xiàn)。它的enqueue(E e)方法將元素插入雙端隊列的末尾,dequeue()方法刪除雙端隊列的第一個元素,并返回該元素。

示例代碼:

Queue<Integer> queue = new ArrayDeque<>();

queue.enqueue(1); // 隊列中插入元素1
queue.enqueue(2); // 隊列中插入元素2

System.out.println(queue.peek()); // 輸出隊頭元素

int num = queue.dequeue(); // 刪除隊頭元素,并返回該元素
System.out.println(num); // 輸出刪除的元素

System.out.println(queue.isEmpty()); // 判斷隊列是否為空
System.out.println(queue.size()); // 輸出隊列中元素的個數(shù)

隊列的應用場景非常廣泛,比如在實現(xiàn)消息隊列、線程池等方面都可以使用隊列數(shù)據(jù)結構。

0